我有一个C# WinForm应用程序,我想在其中实现NumericUpDown组件,该组件根据单击箭头按钮时是否按下控制键来递增/递减其值。如果按下控制键,它将递增1,否则递增0.1。使用ValueChanged事件不起作用,因为值已经更改。我还尝试使用Click和MouseClick事件,但它们在ValueChanged事件之后上升。
有人知道我该怎么做吗?
// This method added to either Click or MouseClick event
private void Click_Event(object sender, EventArgs e)
{
if (Control.ModifierKeys == Keys.Control)
{
numSetPoint1.Increment = 1; // Setting the Increment value takes effect on the next click
}
else
{
numSetPoint1.Increment = 0.1m;
}
}
// Event added to ValueChanged
private void ValueChanged_Event(object sender, EventArgs e)
{
// the same here
}
2条答案
按热度按时间xpcnnkqh1#
一种方法是创建一个
CustomNumericUpDown
控件,然后交换出设计器文件中常规NumericUpDown
控件的所有示例。然后,您只需重写在源代码中实现值up-down的方法,并根据
Control.ModifierKeys
属性的静态值调用或不调用基类。6yt4nkrj2#
您可以在表单级别实现它。
https://learn.microsoft.com/en-us/dotnet/desktop/winforms/input-keyboard/how-to-handle-forms?view=netdesktop-6.0
处理启动窗体的KeyPress或KeyDown事件,将窗体的
KeyPreview
属性设置为true。