在自定义编辑器中滚动,同时在文本框(在面板中)中保持焦点@C#
以下情况: 自定义编辑器控件(带滚动条)和面板中的搜索功能(面板中的文本框)。 当焦点在文本框/面板上时,它应该是可滚动的 我已经尝试过使用override Scroll方法,但大多数情况下事件都没有触发。 甚至没有在WinForms文本框中滚动的事件,所以我不知道如何捕捉它在自定义编辑器中滚动,同时在文本框(在面板中)中保持焦点@C#,c#,scroll,C#,Scroll,以下情况: 自定义编辑器控件(带滚动条)和面板中的搜索功能(面板中的文本框)。 当焦点在文本框/面板上时,它应该是可滚动的 我已经尝试过使用override Scroll方法,但大多数情况下事件都没有触发。 甚至没有在WinForms文本框中滚动的事件,所以我不知道如何捕捉它 有什么想法/WinAPI挂钩吗?谢谢您想如何滚动?按PgUp和PgDn?抓住键,自己做滚动。如果不是,请准确解释什么用户交互会导致滚动 private void yourSearchTextBox1_KeyDown(obj
有什么想法/WinAPI挂钩吗?谢谢您想如何滚动?按PgUp和PgDn?抓住键,自己做滚动。如果不是,请准确解释什么用户交互会导致滚动
private void yourSearchTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.PageDown) scrollPgDn();
if (e.KeyCode == Keys.PageUp) scrollPgUp();
//..
}
您的滚动函数要么调用自定义编辑器方法,要么使用一些逻辑来进行合理的滚动。您可以在滚动之前将焦点设置在编辑器上,然后在滚动之后将焦点设置回搜索文本框。请显示您的代码。在任何情况下,请记住,由于布尔属性(例如AutoScroll)而不是方法,滚动条变得可见/不可见。不需要真正的代码。我只是在寻找一种方法,如何在非焦点元素中滚动。在“非焦点”控件中无法执行任何操作。关注的重点是告诉你当前使用的控件。好的。。我有一个自定义文本编辑器和一个包含搜索功能的面板。如果我搜索,焦点是文本框/按钮/面板。此时,您无法向上或向下滚动文本,因为它没有焦点。我不想失去焦点,但能够滚动它(用鼠标滚轮)好的。对于鼠标滚轮事件,同样的逻辑也适用。您只需像这样添加处理程序:
code
InitializeComponent();this.textBox1.mouseweel+=new System.Windows.Forms.MouseEventHandler(this.scrollPgDwn)code
并且您希望扩展scrol函数的签名,以包括如下事件参数code
private void scrollPgDwn(对象发送器,MouseEventArgs e)code
。如果你想从keydown事件中调用它们,你可以将参数设置为null。显然,如果你在按下按钮后让焦点停留在按钮上,你会想连接到按钮的相同事件。或者在按钮的单击事件结束时将焦点设置回搜索字段。