以下情況:滾動在自定義編輯器,同時具有在文本框的焦點(在面板)@ C#
自定義編輯器控制(與滾動條)和在面板的搜索功能(文本框在面板)。 當焦點在文本框/面板上時,它應該是可滾動的。
我已經嘗試過使用重寫滾動方法,但大多數事件沒有觸發。 甚至沒有在WinForms文本框中滾動的事件,所以我不知道如何捕捉它。
任何想法/ WinAPI掛鉤?謝謝
以下情況:滾動在自定義編輯器,同時具有在文本框的焦點(在面板)@ C#
自定義編輯器控制(與滾動條)和在面板的搜索功能(文本框在面板)。 當焦點在文本框/面板上時,它應該是可滾動的。
我已經嘗試過使用重寫滾動方法,但大多數事件沒有觸發。 甚至沒有在WinForms文本框中滾動的事件,所以我不知道如何捕捉它。
任何想法/ WinAPI掛鉤?謝謝
如何要滾動?按PgUp和PgDn?抓住鑰匙並自己滾動。如果不是,請詳細解釋用戶交互應該導致滾動!
private void yourSearchTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.PageDown) scrollPgDn();
if (e.KeyCode == Keys.PageUp) scrollPgUp();
//..
}
您的滾動功能,要麼調用自定義編輯器的方法,或者使用一些邏輯做一個合理的滾動。您可以將焦點置於編輯器之前,並在滾動後將其設置回搜索文本框。
好的..我有一個自定義文本編輯器和一個包含搜索功能的面板。如果我搜索的焦點是文本框/按鈕/面板什麼的。在這一點上,你不能上下滾動文本,因爲它沒有焦點。我不想失去焦點,但能夠滾動它(用鼠標滾輪) – AndiiX
好的。對於Mousewheel事件,將應用相同的邏輯。你只需要像這樣自己添加處理程序: 'code' InitializeComponent(); this.textBox1.MouseWheel + = new System.Windows.Forms.MouseEventHandler(this.scrollPgDwn);'code' 並且您希望展開滾動函數的簽名以包含像這樣的事件參數 'code'private void scrollPgDwn(object sender,MouseEventArgs e)'code'。如果你想從keydown事件中調用它們,你可以將params設置爲null。 – TaW
很明顯,如果您在焦點按下後讓焦點停留在按鈕上,您將需要使用該按鈕的相同事件。或者,您可以將焦點設置回按鈕的單擊事件結束時的搜索字段。 – TaW
請向我們顯示您的代碼。無論如何,請記住滾動條由於布爾屬性(例如AutoScroll)而變得可見/不可見,而不是方法。 – varocarbas
沒有真正的代碼需要。我只是想找一個方法來說明如何滾動一個沒有被聚焦的元素。 – AndiiX
您無法在「未聚焦」的控件中做任何事情。重點在於告訴你目前使用哪種控制。 – varocarbas