WinForms: Как программно запустить обработчик событий?

15
задан Cœur 11 October 2017 в 03:00
поделиться

3 ответа

3 предложения для увольнения События TextChanged:

Вручную изменяют текст:

        string s = dateTimePicker1.Text;
        dateTimePicker1.Text = String.Empty;
        dateTimePicker1.Text = s;

или

Наследовались DateTimePicker и создают новый метод, который выставляет / называет защищенный OnTextChanged

public class MyDateTimePicker : DateTimePicker
{
    public void OnTextChanged(EventArgs e)
    {
        base.OnTextChanged(e);
    }
}

DateTimePicker или

, Если Вы не любите ООП и хотите повредить инкапсуляцию, можно получить доступ к защищенному методу OnTextChanged посредством отражения:

        MethodInfo onTextChanged = dateTimePicker1.GetType().GetMethod("OnTextChanged", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
        onTextChanged.Invoke(dateTimePicker1, new object[] { new EventArgs() });
11
ответ дан 1 December 2019 в 03:15
поделиться

Можно наследоваться тому классу и создать новый метод, который называет защищенный OnSomeEvent () методом.

class MyButton : Button
{
    public void CauseClick()
    {
        this.OnClick();
    }
}

Как Матовые указанный, можно использовать PerformClick () для этого определенного примера. Однако большинство событий не имеет соответствующих государственных функций для инициирования их.

4
ответ дан 1 December 2019 в 03:15
поделиться

Кнопка в Windows Forms является особым случаем, потому что это имеет метод PerformClick , чтобы сделать точно, о чем Вы говорите. Для других событий в других средствах управления, тем не менее, нет действительно ничего подобного.

8
ответ дан 1 December 2019 в 03:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: