123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- // ***********************************************************************
- // Assembly : HZH_Controls
- // Created : 08-08-2019
- //
- // ***********************************************************************
- // <copyright file="UCTimePanel.cs">
- // Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com
- // </copyright>
- //
- // Blog: https://www.cnblogs.com/bfyx
- // GitHub:https://github.com/kwwwvagaa/NetWinformControl
- // gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git
- //
- // If you use this code, please keep this note.
- // ***********************************************************************
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Drawing;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace HZH_Controls.Controls
- {
- /// <summary>
- /// Class UCTimePanel.
- /// Implements the <see cref="System.Windows.Forms.UserControl" />
- /// </summary>
- /// <seealso cref="System.Windows.Forms.UserControl" />
- [ToolboxItem(false)]
- public partial class UCTimePanel : UserControl
- {
- /// <summary>
- /// Occurs when [select source event].
- /// </summary>
- public event EventHandler SelectSourceEvent;
- /// <summary>
- /// The source
- /// </summary>
- private List<KeyValuePair<string, string>> source = null;
- /// <summary>
- /// Gets or sets a value indicating whether [first event].
- /// </summary>
- /// <value><c>true</c> if [first event]; otherwise, <c>false</c>.</value>
- public bool FirstEvent { get; set; }
- /// <summary>
- /// Gets or sets the source.
- /// </summary>
- /// <value>The source.</value>
- public List<KeyValuePair<string, string>> Source
- {
- get { return source; }
- set
- {
- source = value;
- SetSource(value);
- }
- }
- /// <summary>
- /// The is show border
- /// </summary>
- private bool _IsShowBorder = false;
- /// <summary>
- /// Gets or sets a value indicating whether this instance is show border.
- /// </summary>
- /// <value><c>true</c> if this instance is show border; otherwise, <c>false</c>.</value>
- public bool IsShowBorder
- {
- get { return _IsShowBorder; }
- set
- {
- _IsShowBorder = value;
- ucSplitLine_H1.Visible = value;
- ucSplitLine_H2.Visible = value;
- ucSplitLine_V1.Visible = value;
- ucSplitLine_V2.Visible = value;
- }
- }
- /// <summary>
- /// The select BTN
- /// </summary>
- UCBtnExt selectBtn;
- /// <summary>
- /// 选中按钮
- /// </summary>
- /// <value>The select BTN.</value>
- public UCBtnExt SelectBtn
- {
- get { return selectBtn; }
- set
- {
- if (selectBtn != null && !selectBtn.IsDisposed)
- {
- selectBtn.FillColor = System.Drawing.Color.White;
- selectBtn.RectColor = System.Drawing.Color.White;
- selectBtn.BtnForeColor = System.Drawing.Color.FromArgb(66, 66, 66);
- }
- bool blnEvent = FirstEvent ? true : (selectBtn != null);
- selectBtn = value;
- if (value != null)
- {
- selectBtn.FillColor = System.Drawing.Color.FromArgb(255, 77, 59);
- selectBtn.RectColor = System.Drawing.Color.FromArgb(255, 77, 59);
- selectBtn.BtnForeColor = System.Drawing.Color.White;
- if (blnEvent && SelectSourceEvent != null)
- SelectSourceEvent(selectBtn.Tag.ToStringExt(), null);
- }
- }
- }
- /// <summary>
- /// Initializes a new instance of the <see cref="UCTimePanel" /> class.
- /// </summary>
- public UCTimePanel()
- {
- InitializeComponent();
- this.SizeChanged += UCTimePanel_SizeChanged;
- }
- /// <summary>
- /// Handles the SizeChanged event of the UCTimePanel control.
- /// </summary>
- /// <param name="sender">The source of the event.</param>
- /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
- void UCTimePanel_SizeChanged(object sender, EventArgs e)
- {
- }
- /// <summary>
- /// The row
- /// </summary>
- private int row = 0;
- /// <summary>
- /// Gets or sets the row.
- /// </summary>
- /// <value>The row.</value>
- public int Row
- {
- get { return row; }
- set
- {
- row = value;
- ReloadPanel();
- }
- }
- /// <summary>
- /// The column
- /// </summary>
- private int column = 0;
- /// <summary>
- /// Gets or sets the column.
- /// </summary>
- /// <value>The column.</value>
- public int Column
- {
- get { return column; }
- set
- {
- column = value;
- ReloadPanel();
- }
- }
- /// <summary>
- /// Handles the Load event of the UCTimePanel control.
- /// </summary>
- /// <param name="sender">The source of the event.</param>
- /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
- private void UCTimePanel_Load(object sender, EventArgs e)
- {
- }
- #region 设置面板数据源
- /// <summary>
- /// 功能描述:设置面板数据源
- /// 作 者:HZH
- /// 创建日期:2019-06-25 15:02:15
- /// 任务编号:POS
- /// </summary>
- /// <param name="lstSource">lstSource</param>
- public void SetSource(List<KeyValuePair<string, string>> lstSource)
- {
- try
- {
- ControlHelper.FreezeControl(this, true);
- if (row <= 0 || column <= 0)
- return;
- if (Source != lstSource)
- Source = lstSource;
- int index = 0;
- SelectBtn = null;
- foreach (UCBtnExt btn in this.panMain.Controls)
- {
- if (lstSource != null && index < lstSource.Count)
- {
- btn.BtnText = lstSource[index].Value;
- btn.Tag = lstSource[index].Key;
- index++;
- }
- else
- {
- btn.BtnText = "";
- btn.Tag = null;
- }
- }
- }
- finally
- {
- ControlHelper.FreezeControl(this, false);
- }
- }
- #endregion
- /// <summary>
- /// 设置选中项
- /// </summary>
- /// <param name="strKey">The string key.</param>
- public void SetSelect(string strKey)
- {
- foreach (UCBtnExt item in this.panMain.Controls)
- {
- if (item.Tag != null && item.Tag.ToStringExt() == strKey)
- {
- SelectBtn = item;
- return;
- }
- }
- SelectBtn = new UCBtnExt();
- }
- #region 重置面板
- /// <summary>
- /// 功能描述:重置面板
- /// 作 者:HZH
- /// 创建日期:2019-06-25 15:02:05
- /// 任务编号:POS
- /// </summary>
- public void ReloadPanel()
- {
- if (row <= 0 || column <= 0)
- return;
- SelectBtn = null;
- this.panMain.Controls.Clear();
- this.panMain.ColumnCount = column;
- this.panMain.ColumnStyles.Clear();
- for (int i = 0; i < column; i++)
- {
- this.panMain.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
- }
- this.panMain.RowCount = row;
- this.panMain.RowStyles.Clear();
- for (int i = 0; i < row; i++)
- {
- this.panMain.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
- }
- for (int i = 0; i < row; i++)
- {
- for (int j = 0; j < column; j++)
- {
- UCBtnExt btn = new UCBtnExt();
- btn.BackColor = System.Drawing.Color.Transparent;
- btn.BtnBackColor = System.Drawing.Color.Transparent;
- btn.BtnFont = new System.Drawing.Font("微软雅黑", 13F);
- btn.BtnForeColor = System.Drawing.Color.FromArgb(66, 66, 66);
- btn.ConerRadius = 5;
- btn.Dock = DockStyle.Fill;
- btn.FillColor = System.Drawing.Color.White;
- btn.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
- btn.Cursor = Cursor.Current;
- btn.IsShowRect = true;
- btn.IsRadius = true;
- btn.IsShowTips = false;
- btn.Name = "btn_" + i + "_" + j;
- btn.RectColor = System.Drawing.Color.White;
- btn.RectWidth = 1;
- btn.Width = this.Width;
- btn.TabIndex = 0;
- btn.TipsText = "";
- btn.BtnClick += btn_BtnClick;
- this.panMain.Controls.Add(btn, j, i);
- }
- }
- if (Source != null)
- {
- SetSource(Source);
- }
- }
- #endregion
- /// <summary>
- /// Handles the BtnClick event of the btn control.
- /// </summary>
- /// <param name="sender">The source of the event.</param>
- /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
- void btn_BtnClick(object sender, EventArgs e)
- {
- var btn = (UCBtnExt)sender;
- if (btn.Tag == null)
- return;
- SelectBtn = btn;
- }
- }
- }
|