2014-11-24 5 views
2

У меня есть форма MainForm, которая наследует DockContent и даже зарегистрировала событие mousedown и keypress в инициализации формы. Но ни одно из этих событий не срабатывает и действительно не знает, в чем причина.Событие mousedown не запускается для пакета док-панелей в C#

Ниже приведен код:

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 или даже событие нажатия клавиши не срабатывают.

+0

какие-либо новости? вы прочитали мой обновленный ответ? – giammin

+0

@giammin - я действительно не знаю ... почему ... он не захватывает mousedown или любое событие нажатия клавиши. Я тоже читаю ваш ответ .. все равно ... я все еще пытаюсь .. – sia

ответ

0

События мыши работают только для верхнего элемента управления, поэтому они не будут запускаться для элементов управления формы, если на верхней части есть еще один элемент управления.

там вы можете найти обходной путь:

How do I grab events from sub-controls on a user-control in a WinForms App?

в любом случае я создал простой 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"; 
     } 
    } 
} 
+0

any другие работы вокруг? – sia

+0

@sia http://stackoverflow.com/questions/163104/how-do-i-grab-events-from-sub-controls-on-a-user-control-in-a-winforms-app – giammin

+0

проверено выше и .. все еще событие вообще не срабатывает .. – sia

Смежные вопросы