1、优化LOG显示与引用

2、添加PMA工具,工具内容待完善
3、修复流程树显示
4、添加开源项目,优化UI空间
5、其他BUG更改
This commit is contained in:
liu.wenjie
2021-11-23 15:51:37 +08:00
parent 47f77f5e64
commit a24dda2525
474 changed files with 91916 additions and 6429 deletions

View File

@@ -0,0 +1,392 @@
// ***********************************************************************
// Assembly : HZH_Controls
// Created : 08-08-2019
//
// ***********************************************************************
// <copyright file="TextBoxEx.cs">
// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com
// </copyright>
//
// Blog: https://www.cnblogs.com/bfyx
// GitHubhttps://github.com/kwwwvagaa/NetWinformControl
// giteehttps://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.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace HZH_Controls.Controls
{
/// <summary>
/// Class TextBoxEx.
/// Implements the <see cref="System.Windows.Forms.TextBox" />
/// </summary>
/// <seealso cref="System.Windows.Forms.TextBox" />
public partial class TextBoxEx : TextBox
{
/// <summary>
/// The BLN focus
/// </summary>
private bool blnFocus = false;
/// <summary>
/// The prompt text
/// </summary>
private string _promptText = string.Empty;
/// <summary>
/// The prompt font
/// </summary>
private Font _promptFont = new Font("微软雅黑", 15f, FontStyle.Regular, GraphicsUnit.Pixel);
/// <summary>
/// The prompt color
/// </summary>
private Color _promptColor = Color.Gray;
/// <summary>
/// My rectangle
/// </summary>
private Rectangle _myRectangle = Rectangle.FromLTRB(1, 3, 1000, 3);
/// <summary>
/// The input type
/// </summary>
private TextInputType _inputType = TextInputType.NotControl;
/// <summary>
/// The regex pattern
/// </summary>
private string _regexPattern = "";
/// <summary>
/// The m string old value
/// </summary>
private string m_strOldValue = string.Empty;
/// <summary>
/// The maximum value
/// </summary>
private decimal _maxValue = 1000000m;
/// <summary>
/// The minimum value
/// </summary>
private decimal _minValue = -1000000m;
/// <summary>
/// The decimal length
/// </summary>
private int _decLength = 2;
/// <summary>
/// 水印文字
/// </summary>
/// <value>The prompt text.</value>
[Description("水印文字"), Category("自定义")]
public string PromptText
{
get
{
return this._promptText;
}
set
{
this._promptText = value;
this.OnPaint(null);
}
}
/// <summary>
/// Gets or sets the prompt font.
/// </summary>
/// <value>The prompt font.</value>
[Description("水印字体"), Category("自定义")]
public Font PromptFont
{
get
{
return this._promptFont;
}
set
{
this._promptFont = value;
}
}
/// <summary>
/// Gets or sets the color of the prompt.
/// </summary>
/// <value>The color of the prompt.</value>
[Description("水印颜色"), Category("自定义")]
public Color PromptColor
{
get
{
return this._promptColor;
}
set
{
this._promptColor = value;
}
}
/// <summary>
/// Gets or sets my rectangle.
/// </summary>
/// <value>My rectangle.</value>
public Rectangle MyRectangle
{
get;
set;
}
/// <summary>
/// Gets or sets the old text.
/// </summary>
/// <value>The old text.</value>
public string OldText
{
get;
set;
}
/// <summary>
/// Gets or sets the type of the input.
/// </summary>
/// <value>The type of the input.</value>
[Description("获取或设置一个值,该值指示文本框中的文本输入类型。")]
public TextInputType InputType
{
get
{
return this._inputType;
}
set
{
this._inputType = value;
if (value != TextInputType.NotControl)
{
TextChanged -= new EventHandler(this.TextBoxEx_TextChanged);
TextChanged += new EventHandler(this.TextBoxEx_TextChanged);
}
else
{
TextChanged -= new EventHandler(this.TextBoxEx_TextChanged);
}
}
}
/// <summary>
/// 获取或设置一个值该值指示当输入类型InputType=Regex时使用的正则表达式。
/// </summary>
/// <value>The regex pattern.</value>
[Description("获取或设置一个值该值指示当输入类型InputType=Regex时使用的正则表达式。")]
public string RegexPattern
{
get
{
return this._regexPattern;
}
set
{
this._regexPattern = value;
}
}
/// <summary>
/// 当InputType为数字类型时能输入的最大值
/// </summary>
/// <value>The maximum value.</value>
[Description("当InputType为数字类型时能输入的最大值。")]
public decimal MaxValue
{
get
{
return this._maxValue;
}
set
{
this._maxValue = value;
}
}
/// <summary>
/// 当InputType为数字类型时能输入的最小值
/// </summary>
/// <value>The minimum value.</value>
[Description("当InputType为数字类型时能输入的最小值。")]
public decimal MinValue
{
get
{
return this._minValue;
}
set
{
this._minValue = value;
}
}
/// <summary>
/// 当InputType为数字类型时能输入的最小值
/// </summary>
/// <value>The length of the decimal.</value>
[Description("当InputType为数字类型时小数位数。")]
public int DecLength
{
get
{
return this._decLength;
}
set
{
this._decLength = value;
}
}
/// <summary>
/// Initializes a new instance of the <see cref="TextBoxEx" /> class.
/// </summary>
public TextBoxEx()
{
this.InitializeComponent();
base.GotFocus += new EventHandler(this.TextBoxEx_GotFocus);
base.MouseUp += new MouseEventHandler(this.TextBoxEx_MouseUp);
base.KeyPress += TextBoxEx_KeyPress;
}
/// <summary>
/// Handles the KeyPress event of the TextBoxEx control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="KeyPressEventArgs" /> instance containing the event data.</param>
void TextBoxEx_KeyPress(object sender, KeyPressEventArgs e)
{
//以下代码 取消按下回车或esc的“叮”声
if (e.KeyChar == System.Convert.ToChar(13) || e.KeyChar == System.Convert.ToChar(27))
{
e.Handled = true;
}
}
/// <summary>
/// Handles the MouseUp event of the TextBoxEx control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="MouseEventArgs" /> instance containing the event data.</param>
private void TextBoxEx_MouseUp(object sender, MouseEventArgs e)
{
if (this.blnFocus)
{
base.SelectAll();
this.blnFocus = false;
}
}
/// <summary>
/// Handles the GotFocus event of the TextBoxEx 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 TextBoxEx_GotFocus(object sender, EventArgs e)
{
this.blnFocus = true;
base.SelectAll();
}
/// <summary>
/// Handles the TextChanged event of the TextBoxEx 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 TextBoxEx_TextChanged(object sender, EventArgs e)
{
if (this.Text == "")
{
this.m_strOldValue = this.Text;
}
else if (this.m_strOldValue != this.Text)
{
if (!ControlHelper.CheckInputType(this.Text, this._inputType, this._maxValue, this._minValue, this._decLength, this._regexPattern))
{
int num = base.SelectionStart;
if (this.m_strOldValue.Length < this.Text.Length)
{
num--;
}
else
{
num++;
}
base.TextChanged -= new EventHandler(this.TextBoxEx_TextChanged);
this.Text = this.m_strOldValue;
base.TextChanged += new EventHandler(this.TextBoxEx_TextChanged);
if (num < 0)
{
num = 0;
}
base.SelectionStart = num;
}
else
{
this.m_strOldValue = this.Text;
}
}
}
/// <summary>
/// 引发 <see cref="E:System.Windows.Forms.Control.Paint" /> 事件。
/// </summary>
/// <param name="e">包含事件数据的 <see cref="T:System.Windows.Forms.PaintEventArgs" />。</param>
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (string.IsNullOrEmpty(this.Text) && !string.IsNullOrEmpty(this._promptText))
{
if (e == null)
{
using (Graphics graphics = Graphics.FromHwnd(base.Handle))
{
if (this.Text.Length == 0 && !string.IsNullOrEmpty(this.PromptText))
{
TextFormatFlags textFormatFlags = TextFormatFlags.EndEllipsis | TextFormatFlags.VerticalCenter;
if (this.RightToLeft == RightToLeft.Yes)
{
textFormatFlags |= (TextFormatFlags.Right | TextFormatFlags.RightToLeft);
}
TextRenderer.DrawText(graphics, this.PromptText, this._promptFont, base.ClientRectangle, this._promptColor, textFormatFlags);
}
}
}
}
}
/// <summary>
/// 处理 Windows 消息。
/// </summary>
/// <param name="m">一个 Windows 消息对象。</param>
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == 15 || m.Msg == 7 || m.Msg == 8)
{
this.OnPaint(null);
//Invalidate();
}
}
/// <summary>
/// Handles the <see cref="E:TextChanged" /> event.
/// </summary>
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
protected override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e);
base.Invalidate();
}
}
}