TriangleTrackBar.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. namespace PaintDotNet.CustomControl
  11. {
  12. public partial class TriangleTrackBar : UserControl
  13. {
  14. private TriangleButton triangleButtonSubtract;
  15. private TriangleButton triangleButtonPlus;
  16. public TrackBar trackBar1;
  17. #region 设置trackBar的属性和事件
  18. ////
  19. //// 摘要:
  20. //// 在通过鼠标或键盘操作移动滚动框时发生。
  21. //[SRCategoryAttribute("CatBehavior")]
  22. //[SRDescriptionAttribute("TrackBarOnScrollDescr")]
  23. public event EventHandler TrackBarScroll;
  24. #endregion
  25. /// <summary>
  26. /// 必需的设计器变量。
  27. /// </summary>
  28. private System.ComponentModel.IContainer components = null;
  29. /// <summary>
  30. /// 清理所有正在使用的资源。
  31. /// </summary>
  32. /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
  33. protected override void Dispose(bool disposing)
  34. {
  35. if (disposing && (components != null))
  36. {
  37. components.Dispose();
  38. }
  39. base.Dispose(disposing);
  40. }
  41. #region 组件设计器生成的代码
  42. /// <summary>
  43. /// 设计器支持所需的方法 - 不要修改
  44. /// 使用代码编辑器修改此方法的内容。
  45. /// </summary>
  46. private void InitializeComponent()
  47. {
  48. this.trackBar1 = new System.Windows.Forms.TrackBar();
  49. this.triangleButtonSubtract = new PaintDotNet.CustomControl.TriangleButton();
  50. this.triangleButtonPlus = new PaintDotNet.CustomControl.TriangleButton();
  51. ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit();
  52. this.SuspendLayout();
  53. //
  54. // trackBar1
  55. //
  56. this.trackBar1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
  57. | System.Windows.Forms.AnchorStyles.Left)
  58. | System.Windows.Forms.AnchorStyles.Right)));
  59. this.trackBar1.AutoSize = false;
  60. this.trackBar1.Location = new System.Drawing.Point(10, 4);
  61. this.trackBar1.Margin = new System.Windows.Forms.Padding(2);
  62. this.trackBar1.Name = "trackBar1";
  63. this.trackBar1.Size = new System.Drawing.Size(180, 23);
  64. this.trackBar1.TabIndex = 25;
  65. this.trackBar1.TickStyle = System.Windows.Forms.TickStyle.None;
  66. this.trackBar1.Scroll += new System.EventHandler(this.trackBar1_Scroll);
  67. //
  68. // triangleButtonSubtract
  69. //
  70. this.triangleButtonSubtract.AlignmentStyle = System.Windows.Forms.AnchorStyles.Right;
  71. this.triangleButtonSubtract.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
  72. | System.Windows.Forms.AnchorStyles.Left)));
  73. this.triangleButtonSubtract.BackColor = System.Drawing.Color.Transparent;
  74. this.triangleButtonSubtract.Location = new System.Drawing.Point(4, 8);
  75. this.triangleButtonSubtract.Name = "triangleButtonSubtract";
  76. this.triangleButtonSubtract.Size = new System.Drawing.Size(10, 12);
  77. this.triangleButtonSubtract.TabIndex = 27;
  78. this.triangleButtonSubtract.Click += new System.EventHandler(this.buttonSubtract_Click);
  79. //
  80. // triangleButtonPlus
  81. //
  82. this.triangleButtonPlus.AlignmentStyle = System.Windows.Forms.AnchorStyles.Left;
  83. this.triangleButtonPlus.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
  84. | System.Windows.Forms.AnchorStyles.Right)));
  85. this.triangleButtonPlus.BackColor = System.Drawing.Color.Transparent;
  86. this.triangleButtonPlus.Location = new System.Drawing.Point(186, 8);
  87. this.triangleButtonPlus.Name = "triangleButtonPlus";
  88. this.triangleButtonPlus.Size = new System.Drawing.Size(10, 12);
  89. this.triangleButtonPlus.TabIndex = 26;
  90. this.triangleButtonPlus.Click += new System.EventHandler(this.buttonPlus_Click);
  91. //
  92. // TriangleTrackBar
  93. //
  94. this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
  95. this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
  96. this.Controls.Add(this.triangleButtonSubtract);
  97. this.Controls.Add(this.triangleButtonPlus);
  98. this.Controls.Add(this.trackBar1);
  99. this.Name = "TriangleTrackBar";
  100. this.Size = new System.Drawing.Size(200, 30);
  101. ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit();
  102. this.ResumeLayout(false);
  103. }
  104. #endregion
  105. public TriangleTrackBar()
  106. {
  107. InitializeComponent();
  108. }
  109. /// <summary>
  110. /// 设置trackBar的滚动事件
  111. /// </summary>
  112. /// <param name="sender"></param>
  113. /// <param name="e"></param>
  114. private void trackBar1_Scroll(object sender, EventArgs e)
  115. {
  116. this.TrackBarScroll?.Invoke(sender, e);
  117. }
  118. #region 设置trackBar的属性
  119. [Browsable(true)]
  120. public int Value { get
  121. {
  122. return trackBar1.Value;
  123. }
  124. set
  125. {
  126. trackBar1.Value = value;
  127. }
  128. }
  129. //[Browsable(true)]
  130. //public TickStyle TickStyle { get
  131. // {
  132. // return trackBar1.TickStyle;
  133. // }
  134. // set
  135. // {
  136. // trackBar1.TickStyle = value;
  137. // }
  138. //}
  139. [Browsable(true)]
  140. public int Minimum { get
  141. {
  142. return this.trackBar1.Minimum;
  143. }
  144. set
  145. {
  146. this.trackBar1.Minimum = value;
  147. }
  148. }
  149. [Browsable(true)]
  150. public int Maximum
  151. {
  152. get
  153. {
  154. return this.trackBar1.Maximum;
  155. }
  156. set
  157. {
  158. this.trackBar1.Maximum = value;
  159. }
  160. }
  161. //[Browsable(true)]
  162. //public bool TrackBarAutoSize
  163. //{
  164. // get
  165. // {
  166. // return this.trackBar1.AutoSize;
  167. // }
  168. // set
  169. // {
  170. // this.trackBar1.AutoSize = value;
  171. // }
  172. //}
  173. #endregion
  174. /// <summary>
  175. /// 减操作
  176. /// </summary>
  177. /// <param name="sender"></param>
  178. /// <param name="e"></param>
  179. private void buttonSubtract_Click(object sender, EventArgs e)
  180. {
  181. this.trackBar1.Value = Math.Max(this.trackBar1.Value - 1, this.trackBar1.Minimum);
  182. this.TrackBarScroll?.Invoke(this.trackBar1, e);//待优化
  183. }
  184. /// <summary>
  185. /// 加操作
  186. /// </summary>
  187. /// <param name="sender"></param>
  188. /// <param name="e"></param>
  189. private void buttonPlus_Click(object sender, EventArgs e)
  190. {
  191. this.trackBar1.Value = Math.Min(this.trackBar1.Value + 1, this.trackBar1.Maximum);
  192. this.TrackBarScroll?.Invoke(this.trackBar1, e);
  193. }
  194. }
  195. }