【问题标题】:How can I make a hotkey trigger a Windows Forms button?如何使热键触发 Windows 窗体按钮?
【发布时间】:2011-01-29 07:06:36
【问题描述】:

我希望为其分配热键的表单上有一个按钮:

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");
        }
    }
}

【问题讨论】:

  • 好奇:这里按钮的真正用途是什么?您是否只想在最终用户的光标位于 WebBrowser 控件范围内的某个位置时执行当前 ButtonClick 处理程序中的代码?或者你想在窗体边界的任何地方“快照”光标下的颜色,包括按钮本身?
  • 覆盖表单的ProcessCmdKey method

标签: c# winforms hotkeys


【解决方案1】:

假设这是一个带有WebBrowser 控件的 Windows 窗体项目: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();
    }

【讨论】:

    猜你喜欢
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 2010-11-10
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    相关资源
    最近更新 更多