좋아, 해결책을 찾았습니다 this question 도와주세요. 나는 많은 조합을 시도하고 너무 복잡하지 않은 것을 발견했다. KeyDown 이벤트에 이전 값을 저장하고 textBox.TextChanged
이벤트에서 확인하십시오. 그 당시 가치는 아직 변하지 않았습니다. 이제 numericUpDown은 최소 ... 최대 범위가 아닌 입력을 시각적으로 버립니다. 사용자 친화적이지는 않습니다. 할 일이 있습니다.
public partial class Form1
{
private decimal _oldValue;
private TextBox textBox;
public Form1()
{
InitializeComponent();
textBox = (TextBox)numericUpDown.Controls[1];
textBox.TextChanged += TextBoxOnTextChanged;
}
private void TextBoxOnTextChanged(object sender, EventArgs eventArgs)
{
decimal newValue = Convert.ToDecimal(((TextBox) sender).Text);
if (newValue > numericUpDown.Maximum || newValue < numericUpDown.Minimum)
((TextBox) sender).Text = _oldValue.ToString();
}
private void numericUpDown_KeyDown(object sender, KeyEventArgs e)
{
_oldValue = ((NumericUpDownCustom) sender).Value;
}
}
WPF 또는 WinForms? –
죄송합니다, WinForms. –