Вы должны объявить собственное событие в UserControl и запустить событие при необходимости. Используя ваш пример:
public event EventHandler ButtonClicked;
protected override OnButtonClicked(EventArgs e)
{
var hand = ButtonClicked;
if (hand != null)
hand(this, e);
}
private void CButton_Click(Object sender, EventArgs e)
{
txt = "C";
OnButtonClicked(new EventArgs());
}
Затем вы можете подписаться на событие UserControl ButtonClicked
из другого кода.
Однако лучшим способом может быть создание собственных EventArgs и передача строки в самом событии вместо простого сохранения последнего нажатия клавиши в поле. Примерно так:
public KeyboardEventArgs : EventArgs
{
public KeyboardEventArgs()
:base()
{
}
public KeyboardEventArgs(char Key)
:this()
{
this.Key = Key;
}
char Key {get; set;}
}
public event EventHandler<KeyboardEventArgs> ButtonClicked;
protected override OnButtonClicked(KeyboardEventArgs e)
{
var hand = ButtonClicked;
if (hand != null)
hand(this, e);
}
private void CButton_Click(Object sender, EventArgs e)
{
OnButtonClicked(new KeyboardEventArgs("C"));
}