// ***********************************************************************
// Assembly : HZH_Controls
// Created : 08-08-2019
//
// ***********************************************************************
//
// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com
//
//
// 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
{
///
/// Class FrmInputs.
/// Implements the
///
///
public partial class FrmInputs : FrmWithOKCancel1
{
///
/// Gets the values.
///
/// The values.
public string[] Values { get; private set; }
///
/// The m mast inputs
///
private Dictionary m_mastInputs = new Dictionary();
#region 构造函数
///
/// 功能描述:构造函数
/// 作 者:HZH
/// 创建日期:2019-08-05 10:57:26
/// 任务编号:POS
///
/// 窗体标题
/// The in put labels.
/// 输入项对应输入类型,key:输入项名称,如不设置默认不控制输入
/// 输入项对应正则规则,当imTypes=Regex时有效,key:输入项名称,如不设置默认不控制输入
/// 文本框键盘,key:输入项名称,如不设置默认英文键盘
/// 必填输入项名称
/// 输入项默认值,key:输入项名称
/// 输入数量不能为空
/// 输入数量不能为空
public FrmInputs(
string strTitle,
string[] inPutLabels,
Dictionary inTypes = null,
Dictionary regexs = null,
Dictionary keyBoards = null,
List mastInputs = null,
Dictionary 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
///
/// Does the enter.
///
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();
}
}
}