В этом примере я обработал событие TextBoxes MouseDown
. Отсюда вы можете вызвать событие MouseDown
UserControl, которое содержит ваш TextBox
.
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
OnMouseDown(e); // Goes through as a MouseDown Event from UserControl1
}
}
В зависимости от ваших требований, это может не сработать для вас, так как при обработке MouseDown
UserControl он будет создан как UserControl
(параметр отправителя будет ссылаться на UserControl1.
Я также извлек реализацию OnMouseDown
класса Control
, чтобы посмотреть, можно ли его использовать:
// Extracted using Reflection
// This will not compile as Control.EventMouseDown is a private member
System.Windows.Forms.MouseEventHandler mouseEventHandler = (System.Windows.Forms.MouseEventHandler)this.Events[System.Windows.Forms.Control.EventMouseDown];
if (mouseEventHandler == null)
return;
mouseEventHandler(sender, e);
К сожалению, события хранятся в закрытом доступе и недоступны.
Если вы хотите узнать и обработать событие MouseDown
по-другому, если оно происходит из TextBox, вам придется объявить и вызвать пользовательское событие.
Объявление пользовательского события
public event EventHandler<MouseEventArgs> TextBoxMouseDownEvent;
Поднять пользовательское событие из TextBox_MouseDown
private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
EventHandler<MouseEventArgs> handler = TextBoxMouseDownEvent;
if (handler != null)
{
handler(sender, e);
}
}