2010-03-19 74 views
2

我有一個窗體上的按鈕,我想分配熱鍵:如何使熱鍵觸發Windows窗體按鈕?

namespace WebBrowser 
{ 
    public partial class MainForm : Form 
    { 
     public MainForm() 
     { 
      InitializeComponent(); 
     } 

     int GetPixel(int x, int y) 
     { 
      Bitmap bmp = new Bitmap(1, 1, PixelFormat.Format32bppPArgb); 
      Graphics grp = Graphics.FromImage(bmp); 
      grp.CopyFromScreen(new Point(x,y), Point.Empty, new Size(1,1)); 
      grp.Save(); 
      return bmp.GetPixel(0, 0).ToArgb(); 
     } 

     // THIS! How can I make a hot-key trigger this button? 
     // 
     void Button1Click(object sender, EventArgs e) 
     { 
      int x = Cursor.Position.X; 
      int y = Cursor.Position.Y; 
      int pixel = GetPixel(x,y); 
      textBox1.Text = pixel.ToString(); 
     } 

     void MainFormLoad(object sender, EventArgs e) 
     { 
      webBrowser1.Navigate("http://google.com"); 
     } 
    } 
} 
+0

好奇:什麼真的是這裏的按鈕的目的是什麼?當最終用戶將光標放在WebBrowser控件邊界內的某個位置時,是否只想要執行當前ButtonClick處理程序中的代碼?或者你想「快照」表格邊界任何地方的光標下的顏色,包括按鈕本身? – BillW 2010-03-19 11:54:01

+0

重寫表單的['ProcessCmdKey'方法](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.form.processcmdkey.aspx)。 – 2011-07-16 10:55:38

回答

1

假設這是一個Windows窗體項目有WebBrowser控制:WebBrowser將「吃擊鍵」隨時有焦點,即使Form KeyPreview設置爲「true」。

使用WebBrowser PreviewKeyDown事件調用按鈕點擊:

private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs event) 
    { 
     // Possibly filter here for certain keystrokes? 
     // Using e.KeyCode, e.KeyData or whatever. 
     button1.PerformClick(); 
    }