/Las/Las.WinUI/FrmDGSelector.cs

http://sgsoft-las.googlecode.com/ · C# · 203 lines · 144 code · 26 blank · 33 comment · 9 complexity · 5f6d724a04b763a04a29fe7e58c6a7ac MD5 · raw file

  1. /*
  2. * ????????????????
  3. * ?????????????????????????
  4. *
  5. *
  6. * */
  7. using System;
  8. using System.Collections.Generic;
  9. using System.ComponentModel;
  10. using System.Data;
  11. using System.Drawing;
  12. using System.Text;
  13. using System.Windows.Forms;
  14. using Las.Model;
  15. using Las.Dal;
  16. using Las.Biz;
  17. using Aga.Controls.Tree;
  18. using Aga.Controls.Tree.NodeControls;
  19. namespace Las.WinUI
  20. {
  21. public partial class FrmDGSelector : Form
  22. {
  23. //???????ID
  24. System.Collections.Specialized.StringCollection checkedId = new System.Collections.Specialized.StringCollection();
  25. public FrmDGSelector()
  26. {
  27. InitializeComponent();
  28. SetSelectMode(rbRequired.Checked);
  29. dgTree.LoadOnDemand = true;//?????????
  30. SetupDGTree(dgTree);
  31. contextMenuStrip1.Enabled = false;
  32. }
  33. public FrmDGSelector(ITreeModel tm):this()
  34. {
  35. dgTree.Model = tm;
  36. if (dgTree.Root != null)
  37. {
  38. foreach (TreeNodeAdv n in dgTree.Root.Children)
  39. {
  40. n.Expand();
  41. }
  42. }
  43. }
  44. /// <summary>
  45. /// ??????
  46. /// </summary>
  47. /// <param name="requiredMode">???true???????</param>
  48. private void SetSelectMode(bool requiredMode)
  49. {
  50. labelCnt.Enabled = !requiredMode;
  51. nudCnt.Enabled =!requiredMode;
  52. btnSelect.Text =requiredMode?"??":"??";
  53. }
  54. #region ??????????
  55. private void SetupDGTree(Aga.Controls.Tree.TreeViewAdv tva)
  56. {
  57. tva.SelectionMode = TreeSelectionMode.Single;
  58. //????????contextMenu??
  59. tva.SelectionChanged += new EventHandler(tva_SelectionChanged);
  60. NodeCheckBox cb = new NodeCheckBox("IsChecked");
  61. cb.EditEnabled = true;
  62. cb.ThreeState = false;
  63. cb.CheckStateChanged += new EventHandler<TreePathEventArgs>(cb_CheckStateChanged);
  64. tva.NodeControls.Add(cb);
  65. NodeStateIcon ni = new NodeStateIcon();
  66. ni.DataPropertyName = "Icon";
  67. tva.NodeControls.Add(ni);
  68. NodeTextBox tb = new NodeTextBox();
  69. tb.DataPropertyName = "Text";
  70. tva.NodeControls.Add(tb);
  71. }
  72. #endregion
  73. void cb_CheckStateChanged(object sender, TreePathEventArgs e)
  74. {
  75. IModelNode cn = (IModelNode)e.Path.LastNode;
  76. MoXldg mo = cn.Tag as MoXldg;
  77. bool status = (bool)cn.IsChecked;
  78. if (status)
  79. {
  80. if (!checkedId.Contains(mo.DgId))
  81. {
  82. checkedId.Add(mo.DgId);
  83. }
  84. }
  85. else
  86. {
  87. checkedId.Remove(mo.DgId);
  88. }
  89. }
  90. void tva_SelectionChanged(object sender, EventArgs e)
  91. {
  92. Aga.Controls.Tree.TreeViewAdv tva = (Aga.Controls.Tree.TreeViewAdv)sender;
  93. if (tva.SelectedNodes.Count == 0)
  94. {
  95. contextMenuStrip1.Enabled = false;
  96. }
  97. else
  98. {
  99. contextMenuStrip1.Enabled = true;
  100. }
  101. }
  102. /// <summary>
  103. /// ???????????UI
  104. /// </summary>
  105. /// <param name="sender"></param>
  106. /// <param name="e"></param>
  107. private void btnSelect_Click(object sender, EventArgs e)
  108. {
  109. }
  110. private void rbRequired_CheckedChanged(object sender, EventArgs e)
  111. {
  112. SetSelectMode(rbRequired.Checked);
  113. }
  114. #region ????
  115. /// <summary>
  116. /// ???????/???? ?????
  117. /// </summary>
  118. /// <param name="tva"></param>
  119. /// <param name="tna"></param>
  120. /// <param name="status"></param>
  121. internal void SetCheckStatus(TreeViewAdv tva, TreeNodeAdv tna, bool status)
  122. {
  123. IModelNode drn = (IModelNode)tva.GetPath(tna).LastNode;
  124. MoXldg mo = drn.Tag as MoXldg;
  125. drn.IsChecked = status;
  126. if (status)
  127. {
  128. if (!checkedId.Contains(mo.DgId))
  129. {
  130. checkedId.Add(mo.DgId);
  131. }
  132. }
  133. else
  134. {
  135. if (checkedId.Contains(mo.DgId))
  136. {
  137. checkedId.Remove(mo.DgId);
  138. }
  139. }
  140. foreach (TreeNodeAdv n in tna.Children)
  141. {
  142. SetCheckStatus(tva, n, status);
  143. }
  144. }
  145. /// <summary>
  146. /// ???????????????
  147. /// </summary>
  148. /// <param name="sender"></param>
  149. /// <param name="e"></param>
  150. private void tsmiSelectAllSubNode_Click(object sender, EventArgs e)
  151. {
  152. ToolStripMenuItem tsmi = (ToolStripMenuItem)sender;
  153. ContextMenuStrip cmms = (ContextMenuStrip)tsmi.Owner;
  154. Aga.Controls.Tree.TreeViewAdv tva = (Aga.Controls.Tree.TreeViewAdv)cmms.SourceControl;
  155. tva.SuspendLayout();
  156. SetCheckStatus(tva, tva.SelectedNode, true);
  157. tva.ResumeLayout(true);
  158. tva.Refresh();
  159. }
  160. /// <summary>
  161. /// ??????????????
  162. /// </summary>
  163. /// <param name="sender"></param>
  164. /// <param name="e"></param>
  165. private void tsmiUnSelectAllSub_Click(object sender, EventArgs e)
  166. {
  167. ToolStripMenuItem tsmi = (ToolStripMenuItem)sender;
  168. ContextMenuStrip cmms = (ContextMenuStrip)tsmi.Owner;
  169. Aga.Controls.Tree.TreeViewAdv tva = (Aga.Controls.Tree.TreeViewAdv)cmms.SourceControl;
  170. tva.SuspendLayout();
  171. SetCheckStatus(tva, tva.SelectedNode, false);
  172. tva.ResumeLayout(true);
  173. tva.Refresh();
  174. }
  175. #endregion
  176. }
  177. }