2011-12-24 30 views
9

Tôi đang sử dụng VS2010, Windows 7C# Cuộn một Panel ở dạng cửa sổ

Tôi có một bảng điều khiển có nhiều hộp hình. Nó có

AutoScroll = true 

Thanh cuộn hoạt động bình thường khi tôi kéo hoặc nhấp vào thanh cuộn. Tuy nhiên, tôi muốn cuộn nó bằng các phím mũi tên và bánh xe.

Bánh xe không phản hồi (và thêm trình xử lý sự kiện vào biểu mẫu không hoạt động vì nó ngừng kích hoạt khi tôi thay đổi tiêu điểm) và sử dụng các phím mũi tên mà tôi muốn cuộn theo chương trình. Tôi đã thử các cách sau:

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

Điều này không có tác dụng, thanh cuộn hầu như không di chuyển chút nào. Tối đa luôn là 100 vì lý do nào đó.

gì tôi đã cố gắng vào vấn đề bánh xe (không hoạt động):

// 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(); 
} 

Cảm ơn bạn.

+0

Bạn cần phải đặt trọng tâm vào việc kiểm soát trước khi nó sẽ di chuyển với bánh xe chuột. Hãy thử nhấp vào nó trước. –

+0

Không hoạt động. Tôi đã nhấp vào bảng điều khiển, đó là hộp hình ảnh và thậm chí là hộp văn bản. Bánh xe không hoạt động. –

+0

Sử dụng TablelayoutPanel? –

Trả lời

9

Một vài điều để thử:

Làm bạn Panel có tài sản TabIndex đầu tiên. Đó là:

panel1.TabIndex = 0; 

Rõ ràng, các điều khiển khác trên biểu mẫu phải được lập chỉ mục lại đúng cách.

Ngoài ra, hãy thử thêm trọng tâm trong trường hợp MouseDown:

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

Bạn có thể làm MouseEnter cũng vậy, nhưng điều đó có thể là một giao diện người dùng lẻ kể từ khi chuyển chuột trên bảng điều khiển sẽ ăn cắp tập trung ra khỏi điều khiển hoạt động hiện tại.

Bạn không cần đăng ký sự kiện MouseWheel. Nó sẽ tự động di chuyển thanh cuộn.

3

Bạn cuộn Bảng điều khiển bằng cách gán thuộc tính AutoScrollPosition. Cẩn thận rằng nó sử dụng các giá trị âm.

Lý do bánh xe chuột không hoạt động là do không có bảng điều khiển cũng như hộp hình ảnh là các nút điều khiển tiêu điểm. Bạn sẽ cần phải làm lại bảng điều khiển một chút để làm cho nó có thể lấy nét được. Bạn sẽ tìm thấy mã số trong this answer.

0

Hãy thử

private void panel1_MouseEnter(object sender, EventArgs e)  
{  
    panel1.Focus();  
} 
Các vấn đề liên quan