簡體   English   中英

C#在Windows窗體中滾動Panel

[英]C# Scrolling a Panel in windows forms

我正在使用VS2010,Windows 7

我有一個有很多圖片框的面板。 它有

AutoScroll = true

當我拖動滾動條或單擊它時滾動條正常工作。 但是,我想用滾輪和方向鍵滾動它。

輪子根本沒有響應(並且向表單添加事件處理程序不起作用,因為當我改變焦點時停止觸發),並且使用箭頭鍵我必須以編程方式滾動。 我嘗試了以下方法:

panel3.VerticalScroll.Value = panel3.VerticalScroll.Maximum;

這不起作用,滾動條幾乎沒有移動。 由於某種原因, 最大值總是100。

我在車輪問題上嘗試了什么(不起作用):

// Fires as long as i don't change focus to anything
this.MouseWheel += new MouseEventHandler(Panel1_MouseWheel);

private void Panel1_MouseWheel(object sender, MouseEventArgs e)
{
    panel3.Focus();
}

謝謝。

有幾件事要嘗試:

使您的Panel具有第一個TabIndex屬性。 那是:

panel1.TabIndex = 0;

顯然,應該正確地重新索引表單上的其他控件。

另外,嘗試在MouseDown事件中添加焦點:

void panel1_MouseDown(object sender, MouseEventArgs e) {
  if (!panel1.Focused)
    panel1.Focus();
}

您也可以使用MouseEnter,但這可能是一個奇怪的用戶界面,因為將鼠標移到面板上會使焦點遠離當前的活動控件。

您不需要訂閱MouseWheel事件。 它應該自動移動滾動條。

您可以通過指定AutoScrollPosition屬性來滾動Panel。 請注意它使用負值。

鼠標滾輪不起作用的原因是因為面板和圖片框都不是可聚焦控件。 您需要稍微修改面板控件以使其成為可調焦的。 你會在這個答案中找到代碼。

嘗試

private void panel1_MouseEnter(object sender, EventArgs e)    
{    
   panel1.Focus();    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM