Winform控件Tag使用规范

时间:2022-01-24 08:34:27

Tag在WinForm控件中经常被用来存储姑且数据,类型为object,但是当措施中多个处所使用到Tag时,容易造成Tag使用的混乱,Tag是如此重要的一个属性,应该要好好考虑下如何有效的使用Tag处事于措施开发。

借鉴Web开发时,Js可以通过自界说属性,将状态绑定到Dom节点的自界说Attribute上,这也是绝大大都js插件,附加状态数据的方法。如果把字典引入到Tag中,规范约定Tag就是一个键值对构成的字典,,那么对状态的存取就不会局限于一个状态,而且通过有效的打点可以更大化的阐扬Tag字段的优势

基于以上想法,订立此Tag使用规范

winform控件Tag的每每用到姑且存储依附于控件的数据,为了制止控件使用过程中,tag不易打点的问题,对tag使用进行一些规范。 不要直接对控件Tag进行操纵, 而是使用Control上的如下四个扩展要领

Winform控件Tag使用规范

 一个使用示例

Winform控件Tag使用规范

附录:TreeFilterHelper的实现

public class TreeFilterHelper { #region [Field] private readonly TreeList _tree; private readonly TextEdit _edit; private readonly List<TreeListNode> _collapseNodes = new List<TreeListNode>(); #endregion #region [Public] /// <summary> /// 结构函数 /// </summary> /// <param>要实现筛选成果的TreeList控件</param> /// <param></param> /// <param></param> public TreeFilterHelper(TreeList tree, TextEdit edit, bool immediate) { if (tree == null||edit == null) { return; } _tree = tree; _edit = edit; InitTreeList(); if (immediate) { _edit.TextChanged += (sender, e) => { FilterText(_edit.Text.Trim()); }; } } private void InitTreeList() { _tree.OptionsBehavior.EnableFiltering = true; _tree.OptionsFilter.FilterMode = FilterMode.Extended; _tree.HideFindPanel(); } /// <summary> /// 筛选文字 /// </summary> /// <param>要筛选的文字</param> public void FilterText(string text) { if (string.IsNullOrWhiteSpace(text)) { ClearFilter(); } else { if (_collapseNodes.Count == 0) { if (_tree.HasChildren) { AppendCollapseNodes(_tree.Nodes); } } _tree.SuspendLayout(); _tree.ExpandAll(); _tree.ApplyFindFilter(text); _tree.ResumeLayout(); } } private void AppendCollapseNodes(TreeListNodes nodes) { var eor = nodes.GetEnumerator(); while (eor.MoveNext()) { var node = eor.Current as TreeListNode; if (node == null) { continue; } if (!node.Expanded) { _collapseNodes.Add(node); } if (node.HasChildren) { AppendCollapseNodes(node.Nodes); } } } /// <summary> /// 断根筛选 /// </summary> public void ClearFilter() { _tree.ApplyFindFilter(string.Empty); if (_collapseNodes == null) return; _tree.SuspendLayout(); _collapseNodes.ForEach(one => one.Expanded = false); _collapseNodes.Clear(); _tree.ResumeLayout(); } #endregion }

通过以上代码实现了TreeFilterHelper状态记录东西,附加于TreeList控件,需要过滤TreeList时,只需凭据规范取出Tag中的TreeFilterHelper,挪用其相应要领。

Winform控件Tag使用规范

   文章作者:花生(OutMan)

颁布地点: 

颁布时间:2017-12-02

本文版权归作者和博客园共有,欢迎转载,