Как я устанавливаю событие щелчка для формы?

Вероятно, вам следует использовать concatMap для второго запроса Ajax в псевдокоде:

export const deleteSettingsEpic = action$ => action$.pipe(
    ofType('DELETE_SETTINGSDATA'),
    switchMap(action$ => ajax.ajaxDelete(...)),
    concatMap(result => ajax.get(...))
    ),
);
6
задан GEOCHET 7 October 2008 в 21:13
поделиться

5 ответов

В событии ControlAdded формы добавьте обработчик MouseClick к управлению с Адресом события щелчка формы. Я не протестировал это, но это могло бы работать.

Private Sub Example_ControlAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.ControlEventArgs) Handles Me.ControlAdded

    AddHandler e.Control.MouseClick, AddressOf Example_MouseClick
End Sub

Private Sub Example_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick
    MessageBox.Show("Click")
End Sub
3
ответ дан 9 December 2019 в 22:42
поделиться

Можно сцепить события всего управления, если Вы любите и затем контролируете тот путь. Я предполагаю, что существует некоторый API Win32 воображения uber способ захватить их всех, но это вне меня в данный момент.

    public Form1()
    {
        InitializeComponent();
        HookEvents();
    }

    private void HookEvents() {
        foreach (Control ctl in this.Controls) {
            ctl.MouseClick += new MouseEventHandler(Form1_MouseClick);
        }
    }  

    void Form1_MouseClick(object sender, MouseEventArgs e)
    {
        LogEvent(sender, "MouseClick");
    }

    // and then this just logs to a multiline textbox you have somwhere on the form
    private void LogEvent(object sender, string msg) {
        this.textBox1.Text = string.Format("{0} {1} ({2}) \n {3}",
            DateTime.Now.TimeOfDay.ToString(),
            msg,
            sender.GetType().Name,
            textBox1.Text
            );
    }

Вывод - что-то вроде этого, показывая все события и кто "повысил" их:

14:51:42.3381985 MouseClick (Form1) 
14:51:40.6194485 MouseClick (RichTextBox) 
14:51:40.0100735 MouseClick (TextBox) 
14:51:39.6194485 MouseClick (Form1) 
14:51:39.2131985 MouseClick (RichTextBox) 
14:51:38.8694485 MouseClick (Button) 

HTH.

1
ответ дан 9 December 2019 в 22:42
поделиться

Единственным путем мне когда-либо удавалось сделать, это должно обработать [c] Щелчок [/c] событие каждого управления. Я не полагаю, что событие генерируется, прежде чем управление обрабатывает его.

В WPF, там "туннелируют" события предварительного просмотра, которые обеспечивают эту функциональность, но это действительно не помогает Вам в WinForms.

1
ответ дан 9 December 2019 в 22:42
поделиться

Ловля щелчка по открытому пространству на форме легка, но получить щелчок это находится на самом деле на управлении, Вам будет нужно сотрудничество того управления для отправки его в форму.

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

0
ответ дан 9 December 2019 в 22:42
поделиться

Это - общий шаблон в разработке, ее названный шаблон The Observer. Существует много примеров Шаблонов "наблюдатель", и c# здесь является 1 примером http://msdn.microsoft.com/en-us/library/ms954621.aspx, но имейте хороший Google вокруг.

0
ответ дан 9 December 2019 в 22:42
поделиться
Другие вопросы по тегам:

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