110,567
社区成员
发帖
与我相关
我的任务
分享
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Windows.Forms.Design;
namespace CustomControls
{
/// <summary>
/// NumbersOnlyTextBox class
/// </summary>
[Designer(typeof(NumbersOnlyTextBox.NumbersOnlyTextBoxDesigner))]
public class NumbersOnlyTextBox:System.Windows.Forms.TextBox
{
[DllImport("user32.dll")]
private static extern bool MessageBeep(uint uType);
public override bool PreProcessMessage(ref Message msg)
{
int keyValue = msg.WParam.ToInt32();
if ((keyValue > 47 && keyValue < 58) || keyValue == 46 || (keyValue > 34 && keyValue < 41) || keyValue == 8)
{
return base.PreProcessMessage(ref msg);
}
else
{
//Delete Key
if (msg.Msg == 256 && keyValue == 46)
{
return base.PreProcessMessage(ref msg);
}
//Windows message id used to limit 1 beep per keystroke
if (msg.Msg == 258)
{
MessageBeep(0);
}
return true;
}
}
public NumbersOnlyTextBox()
{
}
#region Internal Classes
/// <summary>
///
/// </summary>
internal class NumbersOnlyTextBoxDesigner : System.Windows.Forms.Design.ControlDesigner
{
#region Method Overrides
protected override void PostFilterProperties(System.Collections.IDictionary properties)
{
//base.PostFilterProperties(properties);
properties.Remove("Text");
}
#endregion
}
#endregion
}
}
private void Form1_Load(object sender, EventArgs e)
{
maskedTextBox1.Mask = "00/00/0000";
maskedTextBox1.MaskInputRejected += new MaskInputRejectedEventHandler(maskedTextBox1_MaskInputRejected);
maskedTextBox1.KeyDown += new KeyEventHandler(maskedTextBox1_KeyDown);
}
void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
{
if (maskedTextBox1.MaskFull)
{
toolTip1.ToolTipTitle = "Input Rejected - Too Much Data";
toolTip1.Show("You cannot enter any more data into the date field. Delete some characters in order to insert more data.", maskedTextBox1, maskedTextBox1.Location.X, maskedTextBox1.Location.Y, 5000);
}
else if (e.Position == maskedTextBox1.Mask.Length)
{
toolTip1.ToolTipTitle = "Input Rejected - End of Field";
toolTip1.Show("You cannot add extra characters to the end of this date field.", maskedTextBox1, maskedTextBox1.Location.X, maskedTextBox1.Location.Y, 5000);
}
else
{
toolTip1.ToolTipTitle = "Input Rejected";
toolTip1.Show("You can only add numeric characters (0-9) into this date field.", maskedTextBox1, maskedTextBox1.Location.X, maskedTextBox1.Location.Y, 5000);
}
}
void maskedTextBox1_KeyDown(object sender, KeyEventArgs e)
{
// The balloon tip is visible for five seconds; if the user types any data before it disappears, collapse it ourselves.
toolTip1.Hide(maskedTextBox1);
}