DockAreasEditor.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:DockAreasEditor.cs
  5. * 2.功能描述:类文件
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈晓野 2014/09/01 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.ComponentModel;
  12. using System.Drawing;
  13. using System.Drawing.Design;
  14. using System.Windows.Forms;
  15. using System.Windows.Forms.Design;
  16. namespace Dongke.IBOSS.PRD.Basics.DockPanel
  17. {
  18. internal class DockAreasEditor : UITypeEditor
  19. {
  20. private class DockAreasEditorControl : System.Windows.Forms.UserControl
  21. {
  22. private CheckBox checkBoxFloat;
  23. private CheckBox checkBoxDockLeft;
  24. private CheckBox checkBoxDockRight;
  25. private CheckBox checkBoxDockTop;
  26. private CheckBox checkBoxDockBottom;
  27. private CheckBox checkBoxDockFill;
  28. private DockAreas m_oldDockAreas;
  29. public DockAreas DockAreas
  30. {
  31. get
  32. {
  33. DockAreas dockAreas = 0;
  34. if (checkBoxFloat.Checked)
  35. dockAreas |= DockAreas.Float;
  36. if (checkBoxDockLeft.Checked)
  37. dockAreas |= DockAreas.DockLeft;
  38. if (checkBoxDockRight.Checked)
  39. dockAreas |= DockAreas.DockRight;
  40. if (checkBoxDockTop.Checked)
  41. dockAreas |= DockAreas.DockTop;
  42. if (checkBoxDockBottom.Checked)
  43. dockAreas |= DockAreas.DockBottom;
  44. if (checkBoxDockFill.Checked)
  45. dockAreas |= DockAreas.Document;
  46. if (dockAreas == 0)
  47. return m_oldDockAreas;
  48. else
  49. return dockAreas;
  50. }
  51. }
  52. public DockAreasEditorControl()
  53. {
  54. checkBoxFloat = new CheckBox();
  55. checkBoxDockLeft = new CheckBox();
  56. checkBoxDockRight = new CheckBox();
  57. checkBoxDockTop = new CheckBox();
  58. checkBoxDockBottom = new CheckBox();
  59. checkBoxDockFill = new CheckBox();
  60. SuspendLayout();
  61. checkBoxFloat.Appearance = Appearance.Button;
  62. checkBoxFloat.Dock = DockStyle.Top;
  63. checkBoxFloat.Height = 24;
  64. checkBoxFloat.Text = Strings.DockAreaEditor_FloatCheckBoxText;
  65. checkBoxFloat.TextAlign = ContentAlignment.MiddleCenter;
  66. checkBoxFloat.FlatStyle = FlatStyle.System;
  67. checkBoxDockLeft.Appearance = System.Windows.Forms.Appearance.Button;
  68. checkBoxDockLeft.Dock = System.Windows.Forms.DockStyle.Left;
  69. checkBoxDockLeft.Width = 24;
  70. checkBoxDockLeft.FlatStyle = FlatStyle.System;
  71. checkBoxDockRight.Appearance = System.Windows.Forms.Appearance.Button;
  72. checkBoxDockRight.Dock = System.Windows.Forms.DockStyle.Right;
  73. checkBoxDockRight.Width = 24;
  74. checkBoxDockRight.FlatStyle = FlatStyle.System;
  75. checkBoxDockTop.Appearance = System.Windows.Forms.Appearance.Button;
  76. checkBoxDockTop.Dock = System.Windows.Forms.DockStyle.Top;
  77. checkBoxDockTop.Height = 24;
  78. checkBoxDockTop.FlatStyle = FlatStyle.System;
  79. checkBoxDockBottom.Appearance = System.Windows.Forms.Appearance.Button;
  80. checkBoxDockBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
  81. checkBoxDockBottom.Height = 24;
  82. checkBoxDockBottom.FlatStyle = FlatStyle.System;
  83. checkBoxDockFill.Appearance = System.Windows.Forms.Appearance.Button;
  84. checkBoxDockFill.Dock = System.Windows.Forms.DockStyle.Fill;
  85. checkBoxDockFill.FlatStyle = FlatStyle.System;
  86. this.Controls.AddRange(new Control[] {
  87. checkBoxDockFill,
  88. checkBoxDockBottom,
  89. checkBoxDockTop,
  90. checkBoxDockRight,
  91. checkBoxDockLeft,
  92. checkBoxFloat});
  93. Size = new System.Drawing.Size(160, 144);
  94. BackColor = SystemColors.Control;
  95. ResumeLayout();
  96. }
  97. public void SetStates(DockAreas dockAreas)
  98. {
  99. m_oldDockAreas = dockAreas;
  100. if ((dockAreas & DockAreas.DockLeft) != 0)
  101. checkBoxDockLeft.Checked = true;
  102. if ((dockAreas & DockAreas.DockRight) != 0)
  103. checkBoxDockRight.Checked = true;
  104. if ((dockAreas & DockAreas.DockTop) != 0)
  105. checkBoxDockTop.Checked = true;
  106. if ((dockAreas & DockAreas.DockTop) != 0)
  107. checkBoxDockTop.Checked = true;
  108. if ((dockAreas & DockAreas.DockBottom) != 0)
  109. checkBoxDockBottom.Checked = true;
  110. if ((dockAreas & DockAreas.Document) != 0)
  111. checkBoxDockFill.Checked = true;
  112. if ((dockAreas & DockAreas.Float) != 0)
  113. checkBoxFloat.Checked = true;
  114. }
  115. }
  116. private DockAreasEditor.DockAreasEditorControl m_ui = null;
  117. public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
  118. {
  119. return UITypeEditorEditStyle.DropDown;
  120. }
  121. public override object EditValue(ITypeDescriptorContext context, IServiceProvider sp, object value)
  122. {
  123. if (m_ui == null)
  124. m_ui = new DockAreasEditor.DockAreasEditorControl();
  125. m_ui.SetStates((DockAreas)value);
  126. IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)sp.GetService(typeof(IWindowsFormsEditorService));
  127. edSvc.DropDownControl(m_ui);
  128. return m_ui.DockAreas;
  129. }
  130. }
  131. }