Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在自定义编辑器中滚动,同时在文本框(在面板中)中保持焦点@C#_C#_Scroll - Fatal编程技术网

在自定义编辑器中滚动,同时在文本框(在面板中)中保持焦点@C#

在自定义编辑器中滚动,同时在文本框(在面板中)中保持焦点@C#,c#,scroll,C#,Scroll,以下情况: 自定义编辑器控件(带滚动条)和面板中的搜索功能(面板中的文本框)。 当焦点在文本框/面板上时,它应该是可滚动的 我已经尝试过使用override Scroll方法,但大多数情况下事件都没有触发。 甚至没有在WinForms文本框中滚动的事件,所以我不知道如何捕捉它 有什么想法/WinAPI挂钩吗?谢谢您想如何滚动?按PgUp和PgDn?抓住键,自己做滚动。如果不是,请准确解释什么用户交互会导致滚动 private void yourSearchTextBox1_KeyDown(obj

以下情况:

自定义编辑器控件(带滚动条)和面板中的搜索功能(面板中的文本框)。 当焦点在文本框/面板上时,它应该是可滚动的

我已经尝试过使用override Scroll方法,但大多数情况下事件都没有触发。 甚至没有在WinForms文本框中滚动的事件,所以我不知道如何捕捉它


有什么想法/WinAPI挂钩吗?谢谢

您想如何滚动?按PgUpPgDn?抓住键,自己做滚动。如果不是,请准确解释什么用户交互会导致滚动

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。显然,如果你在按下按钮后让焦点停留在按钮上,你会想连接到按钮的相同事件。或者在按钮的单击事件结束时将焦点设置回搜索字段。