Files
2026-01-07 11:33:05 +08:00

58 lines
1.2 KiB
C#

using System;
using System.Windows.Forms;
namespace ICSharpCode.TextEditor.UserControls
{
class Int32TextBox : TextBox
{
public int Min { get; set; }
public int Max { get; set; }
public Int32TextBox()
: this(1, int.MaxValue)
{
}
public Int32TextBox(int min, int max)
{
Min = min;
Max = max;
}
protected override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e);
if (!IsValidNumber(Text))
{
Text = string.Empty;
}
}
protected override void WndProc(ref Message m)
{
const int WM_PASTE = 0x0302;
if (m.Msg == WM_PASTE)
{
string text = Clipboard.GetText();
if (!IsValidNumber(text))
return;
}
base.WndProc(ref m);
}
private bool IsValidNumber(string text)
{
int i;
if (int.TryParse(text, out i))
{
return i <= Max && i >= Min;
}
return false;
}
}
}