• 全部
...

求助:C# Panel或PictureBox上的PreviewKeyDown事件不触发

春夏_秋冬 2019-06-23 12:44:46

  1. private void Form1_Load(object sender, EventArgs e)
  2. {
  3. this.pictureBox1.PreviewKeyDown += PictureBox1_PreviewKeyDown;
  4. }

  5. private void PictureBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
  6. {
  7. if (e.Modifiers == Keys.Control && e.KeyCode == Keys.C)
  8. {
  9. MessageBox.Show("复制");
  10. }
  11. }

事件不触发,打断点也不进入调试模式!请问各位大佬,这是为什么?
...全文
给本帖投票
4234 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
fgbdjfhu 2019-08-15
  • 打赏
  • 举报
回复
上面的代码补充一下里面的数据
if (txtMobilePhone.Focused || txtCode.Focused || txtName.Focused)
{
。。。。。。。。。。。。
}
fgbdjfhu 2019-08-15
  • 打赏
  • 举报
回复
刚刚做出来了 我的panel也弄不了 我就直接用form的KeyPress实现了,希望有用
private void FrmCustomerBranch_Load(object sender, EventArgs e)
{
this.KeyPress += FrmCustomerBranch_KeyPress;
this.KeyPreview = true;
}


private void FrmCustomerBranch_KeyPress(object sender, KeyPressEventArgs e)
{// 回车自动查询
if (e.KeyChar == (Char)Keys.Enter)
{
........................
}
}
tone1128 2019-06-28
  • 打赏
  • 举报
回复

   private void pictureBox1_PreviewKeyDown_1(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.Modifiers == Keys.Control)
            {
                if (e.KeyCode == Keys.C)
                    MessageBox.Show("复制");
            }
        }

        private void test_Activated(object sender, EventArgs e)
        {
            pictureBox1.Focus();
        }
desperaso 2019-06-24
  • 打赏
  • 举报
回复
引用 11 楼 春夏_秋冬 的回复:
[quote=引用 6 楼 desperaso 的回复:]
先设置焦点

private void Form1_Activated(object sender, EventArgs e)
{
pictureBox1.Focus();
}

private void pictureBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
MessageBox.Show("111");
}

试过,不行,pictureBox无法获取焦点[/quote]
难道说我用的vs2017是D版的?
desperaso 2019-06-24
  • 打赏
  • 举报
回复
引用 12 楼 春夏_秋冬 的回复:
引用 10 楼 assky124 的回复:
Panel 之类的 要设置Focusable 或者Clickable之类的属性为Ture,好让控件接受焦点
panel中没有找到Focusable属性


要是一打开是窗体就有焦点,是form的Activated事件。
不是Focusable,是Focus();
assky124 2019-06-24
  • 打赏
  • 举报
回复
myPanel1.Click += (s, e) => myPanel1.Focus(); myPanel1.PreviewKeyDown += (s, e) => MessageBox.Show(e.KeyCode.ToString());
春夏_秋冬 2019-06-24
  • 打赏
  • 举报
回复
引用 10 楼 assky124 的回复:
Panel 之类的 要设置Focusable 或者Clickable之类的属性为Ture,好让控件接受焦点
panel中没有找到Focusable属性
春夏_秋冬 2019-06-24
  • 打赏
  • 举报
回复
引用 6 楼 desperaso 的回复:
先设置焦点

        private void Form1_Activated(object sender, EventArgs e)
        {
            pictureBox1.Focus();
        }

        private void pictureBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            MessageBox.Show("111");
        }

试过,不行,pictureBox无法获取焦点
assky124 2019-06-24
  • 打赏
  • 举报
回复
Panel 之类的 要设置Focusable 或者Clickable之类的属性为Ture,好让控件接受焦点
wilson1966 2019-06-24
  • 打赏
  • 举报
回复
你的PreviewKeyDown 是设在pictureBox1 上 所以, pictureBox1 须先取得焦点,用6楼的方式
ManBOyyy 2019-06-24
  • 打赏
  • 举报
回复
6#已測試,是可以的,我用的VS2005版本都可以
Mr.胤少 2019-06-23
  • 打赏
  • 举报
回复
你这是不允许复制图片?这个要用钩子拦截键盘吧
春夏_秋冬 2019-06-23
  • 打赏
  • 举报
回复
引用 楼主 春夏_秋冬 的回复:
        
private void Form1_Load(object sender, EventArgs e)
        {
            this.pictureBox1.PreviewKeyDown += PictureBox1_PreviewKeyDown;
        }

        private void PictureBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.Modifiers == Keys.Control && e.KeyCode == Keys.C)
            {
                MessageBox.Show("复制");
            }
        }
事件不触发,打断点也不进入调试模式!请问各位大佬,这是为什么?
但是,如果是Form窗体挂接这个事件的话,就要触发
desperaso 2019-06-23
  • 打赏
  • 举报
回复
引用 7 楼 三年五年 的回复:
Load事件没有Handle怎么会出发Load事件呢?

没问题,先在窗体上放置一个picturbox,再load
三年五年 2019-06-23
  • 打赏
  • 举报
回复
Load事件没有Handle怎么会出发Load事件呢?
desperaso 2019-06-23
  • 打赏
  • 举报
回复
先设置焦点

private void Form1_Activated(object sender, EventArgs e)
{
pictureBox1.Focus();
}

private void pictureBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
MessageBox.Show("111");
}

春夏_秋冬 2019-06-23
  • 打赏
  • 举报
回复
引用 2 楼 Mr.胤少 的回复:
你这是不允许复制图片?这个要用钩子拦截键盘吧
不是 我只是想测试一下PictureBox控件的键盘事件,没有反应
春夏_秋冬 2019-06-23
  • 打赏
  • 举报
回复
引用 3 楼 stherix 的回复:
KeyPreview要设为true
设置了的,但是没有用,还是没法触发
stherix 2019-06-23
  • 打赏
  • 举报
回复
KeyPreview要设为true

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部