在滚动时更改滚动条值,即使焦点位于其他对象上
本文关键字:于其他 其他 对象 焦点 滚动 滚动条 | 更新日期: 2023-09-27 18:26:00
我在窗体上有一个textBox和一个vScrollBar。我希望textBox有焦点,但当它有焦点时,使用鼠标上的滚动按钮不会更改滚动条值。如果滚动条有焦点,我可以很容易地用鼠标滚动,但在文本框中键入文本就不起作用了。有没有办法捕捉表单上的所有滚动按钮活动并将其重定向到滚动条?
处理TextBox的MouseWheel事件。。。
public frmSTOverScrollText()
{
InitializeComponent();
txtInput.MouseWheel += new MouseEventHandler(txtInput_MouseWheel);
}
void txtInput_MouseWheel(object sender, MouseEventArgs e)
{
if (e.Delta < 0)
{
if (vsInput.Value + vsInput.LargeChange <= vsInput.Maximum)
vsInput.Value += vsInput.LargeChange;
}
else if (vsInput.Value - vsInput.LargeChange >= vsInput.Minimum)
vsInput.Value -= vsInput.LargeChange;
}
转到表单属性下,在事件类型中添加KeyDown事件:
yourTextBox.Text += e.KeyValue;
之后,转到文本框属性下,在事件类型中添加一个Enter事件:
this.Focus();
从本质上讲,将会发生的事情就是这样。该表单现在将每次按键指向文本框。当文本框处于焦点时,所述文本框将自行取消焦点,让表单将任何字符附加到文本框中。