123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- // ***********************************************************************
- // Assembly : HZH_Controls
- // Created : 08-08-2019
- //
- // ***********************************************************************
- // <copyright file="FrmInputs.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.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using HZH_Controls.Controls;
- namespace HZH_Controls.Forms
- {
- /// <summary>
- /// Class FrmInputs.
- /// Implements the <see cref="HZH_Controls.Forms.FrmWithOKCancel1" />
- /// </summary>
- /// <seealso cref="HZH_Controls.Forms.FrmWithOKCancel1" />
- public partial class FrmInputs : FrmWithOKCancel1
- {
- /// <summary>
- /// Gets the values.
- /// </summary>
- /// <value>The values.</value>
- public string[] Values { get; private set; }
- /// <summary>
- /// The m mast inputs
- /// </summary>
- private Dictionary<int, string> m_mastInputs = new Dictionary<int, string>();
- #region 构造函数
- /// <summary>
- /// 功能描述:构造函数
- /// 作 者:HZH
- /// 创建日期:2019-08-05 10:57:26
- /// 任务编号:POS
- /// </summary>
- /// <param name="strTitle">窗体标题</param>
- /// <param name="inPutLabels">The in put labels.</param>
- /// <param name="inTypes">输入项对应输入类型,key:输入项名称,如不设置默认不控制输入</param>
- /// <param name="regexs">输入项对应正则规则,当imTypes=Regex时有效,key:输入项名称,如不设置默认不控制输入</param>
- /// <param name="keyBoards">文本框键盘,key:输入项名称,如不设置默认英文键盘</param>
- /// <param name="mastInputs">必填输入项名称</param>
- /// <param name="defaultValues">输入项默认值,key:输入项名称</param>
- /// <exception cref="System.Exception">输入数量不能为空</exception>
- /// <exception cref="Exception">输入数量不能为空</exception>
- public FrmInputs(
- string strTitle,
- string[] inPutLabels,
- Dictionary<string, TextInputType> inTypes = null,
- Dictionary<string, string> regexs = null,
- Dictionary<string, HZH_Controls.Controls.KeyBoardType> keyBoards = null,
- List<string> mastInputs = null,
- Dictionary<string, string> defaultValues = null)
- {
- InitializeComponent();
- this.Title = strTitle;
- if (inPutLabels.Length <= 0)
- {
- throw new Exception("输入数量不能为空");
- }
- try
- {
- Values = new string[inPutLabels.Length];
- HZH_Controls.ControlHelper.FreezeControl(this, true);
- for (int i = inPutLabels.Length - 1; i >= 0; i--)
- {
- Panel p = new Panel();
- p.Dock = DockStyle.Top;
- p.Height = 62;
- p.Padding = new Padding(10);
- HZH_Controls.Controls.UCTextBoxEx txt = new Controls.UCTextBoxEx();
- txt.Dock = DockStyle.Fill;
- txt.IsShowKeyboard = true;
- txt.IsShowClearBtn = true;
- txt.Name = "txt_" + i;
- txt.TabIndex = i;
- if (inTypes != null && inTypes.ContainsKey(inPutLabels[i]))
- {
- txt.InputType = inTypes[inPutLabels[i]];
- if (txt.InputType == TextInputType.Regex && regexs != null && regexs.ContainsKey(inPutLabels[i]))
- txt.RegexPattern = regexs[inPutLabels[i]];
- }
- if (keyBoards != null && keyBoards.ContainsKey(inPutLabels[i]))
- txt.KeyBoardType = keyBoards[inPutLabels[i]];
- if (mastInputs != null && mastInputs.Contains(inPutLabels[i]))
- {
- m_mastInputs[i] = inPutLabels[i];
- }
- if (defaultValues != null && defaultValues.ContainsKey(inPutLabels[i]))
- txt.InputText = defaultValues[inPutLabels[i]];
- p.Controls.Add(txt);
- Label lbl = new Label();
- lbl.Text = inPutLabels[i];
- lbl.Padding = new System.Windows.Forms.Padding(0, 0, 5, 0);
- lbl.TextAlign = ContentAlignment.MiddleRight;
- lbl.AutoSize = false;
- lbl.Width = 120;
- lbl.Dock = DockStyle.Left;
- lbl.Font = new System.Drawing.Font("微软雅黑", 12);
- p.Controls.Add(lbl);
- Label lblT = new Label();
- if (mastInputs != null && mastInputs.Contains(inPutLabels[i]))
- {
- lblT.Text = "*";
- }
- else
- {
- lblT.Text = "";
- }
- lblT.AutoSize = false;
- lblT.TextAlign = ContentAlignment.MiddleLeft;
- lblT.Width = 25;
- lblT.Dock = DockStyle.Right;
- lblT.Font = new System.Drawing.Font("微软雅黑", 12);
- lblT.ForeColor = Color.Red;
- p.Controls.Add(lblT);
- this.panel3.Controls.Add(p);
- this.ActiveControl = txt;
- }
- this.Height = 124 + inPutLabels.Length * 62;
- }
- finally
- {
- HZH_Controls.ControlHelper.FreezeControl(this, false);
- }
- }
- #endregion
- /// <summary>
- /// Does the enter.
- /// </summary>
- protected override void DoEnter()
- {
- for (int i = 0; i < Values.Length; i++)
- {
- var cs = this.panel3.Controls.Find("txt_" + i, true);
- if (cs.Length > 0)
- {
- var txt = cs[0] as HZH_Controls.Controls.UCTextBoxEx;
- Values[i] = txt.InputText;
- if (m_mastInputs.ContainsKey(i) && string.IsNullOrWhiteSpace(txt.InputText))
- {
- HZH_Controls.Forms.FrmTips.ShowTipsInfo(this, "[" + m_mastInputs[i] + "]必须输入。");
- this.ActiveControl = txt.txtInput;
- return;
- }
- }
- }
- base.DoEnter();
- }
- }
- }
|