2

我有一个继承 DockContent 的 Form MainForm,甚至在表单的初始化中注册了 mousedown 和 keypress 事件。但是这些事件都没有被触发,并且真的不知道可能是什么原因。

下面是代码:

using WeifenLuo.WinFormsUI.Docking;
public partial class MainForm : DockContent
{

     InitializeComponent();         
}

 private void InitializeComponent()
 {    
    this.Load += new System.EventHandler(this.MainForm_Load);
    this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.MainForm_KeyPress);
    this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyUp);
    this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseDown);
 }


}

private void MainForm_MouseDown(object sender, MouseEventArgs e)
{
    Copy.Show(Cursor.Position);
}

在表单的右侧或左侧单击我想显示带有“复制”项的上下文菜单。但是 mousedown 事件甚至 keypress 事件都不会触发。

4

1 回答 1

0

鼠标事件仅适用于顶部控件,因此当顶部有另一个控件时,它们不会为表单控件触发。

在那里你可以找到一些解决方法:

如何从 WinForms 应用程序中用户控件上的子控件中获取事件?

无论如何,我用你的代码创建了一个简单的 winform 应用程序,一切正常,所以你肯定有一些东西正在吞噬你所有的事件

using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;

namespace WindowsFormsApplication2
{
    public partial class Form1 : DockContent
    {
        public Form1()
        {
            InitializeComponent();
            label1.Text = "init";
            KeyPress += MainForm_KeyPress;
            KeyUp += MainForm_KeyUp;
            MouseDown += MainForm_MouseDown;
        }
        private void MainForm_MouseDown(object sender, MouseEventArgs e)
        {
            label1.Text = "MainForm_MouseDown";
        }
        private void MainForm_KeyUp(object sender, KeyEventArgs e)
        {
            label1.Text = "MainForm_KeyUp";
        }
        private void MainForm_KeyPress(object sender, KeyPressEventArgs e)
        {
            label1.Text = "MainForm_KeyUp";
        }
    }
}
于 2014-11-24T08:48:56.180 回答