[英]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.