не может добавить или удалить обработчик события "группа методов", но дизайнер может - PullRequest
0 голосов
/ 02 июня 2019

Когда я пытаюсь добавить или удалить обработчик события, возникает ошибка «невозможно назначить…« группе методов ». Тем не менее точная строка кода в конструкторе компилируется нормально.

Я заполняю списокящики, чтобы пользователь мог выбирать элементы. Есть несколько обратных ссылок SelectedIndexChange, которые я не хочу запускать, пока у меня все не будет на месте. Я без проблем закодировал числовое значение вверх-вниз, чтобы предотвратить его срабатывание, но я не могу получить закодированный списоки я вынужден использовать семафоры для предотвращения нежелательных событий. Я посмотрел сборку VS2017 "xxx.Designer.cs", скопировал и вставил точную строку кода в "xx.cs", но эта ошибка появляется.

        {
            cb_AppNames_SelectedIndexChanged -= new System.EventHandler(this.cb_AppNames_SelectedIndexChanged);
            FillAppBox();
            cb_AppNames_SelectedIndexChanged += new System.EventHandler(this.cb_AppNames_SelectedIndexChanged);

вот код из Designer.cs

            // cb_SelProj
            // 
            this.cb_SelProj.FormattingEnabled = true;
            this.cb_SelProj.Location = new System.Drawing.Point(86, 25);
            this.cb_SelProj.Name = "cb_SelProj";
            this.cb_SelProj.Size = new System.Drawing.Size(279, 21);
            this.cb_SelProj.TabIndex = 0;
            this.cb_SelProj.SelectedIndexChanged += new System.EventHandler(this.cb_SelProj_SelectedIndexChanged);```

fixme1.png shows error messaged and fixme2 shows code that has no err
![1](http://stateson.net/images/fixme1.png)
![2](http://stateson.net/images/fixme1.png)


Ответы [ 2 ]

0 голосов
/ 02 июня 2019

Вы в основном правы, но на самом деле проблема была (1) около 3 часов утра, глядя на это, (2) не удалось получить файл .png для отображения на этом форуме - все еще не знаю, что я сделал не так, и (3) из-за невозможности увидеть .png на «большом экране», поэтому я не заметил, что использовал «_» вместо «.» когда я попытался закодировать следующее

this.cb_AppNames.SelectedIndexChanged -= new System.EventHandler(this.cb_AppNames_SelectedIndexChanged);

Я использовал маленький шрифт в VS2017 для кода и не видел проблемы, хотя здесь все ясно:

this.cb_AppNames.SelectedIndexChanged -= new System.EventHandler(this.cb_AppNames_SelectedIndexChanged);
this.cb_AppNames_SelectedIndexChanged -= new System.EventHandler(this.cb_AppNames_SelectedIndexChanged);

Может быть, это не так просто. Я даже не могу заставить абзацы кода отображаться в правильном порядке. Я думал, что у меня были проблемы в Askubuntu, когда модератор саркастически отредактировал мой пост, но я наконец понял это там. Не уверен, что здесь не так, и это не 3 часа утра. НАКОНЕЦ ПОЛУЧИЛ ПРАВИЛЬНЫЙ ФОРМАТ !!! Жаловаться не буду, достаточно благодарен, что этот форум доступен.

0 голосов
/ 02 июня 2019

Событие (например, SelectedIndexChanged) похоже на список обратных вызовов, которые вызываются, когда происходит событие. Если вы не хотите / не нуждаетесь в этом событии до того, как заполнили свой список, не добавляйте обратный вызов по дизайнеру, а в свой код после заполнения данных.

В вашем примере вы не используете тот же код, что и в конструкторе. Desigener добавляет метод b_SelProj_SelectedIndexChanged. В своем коде вы пытаетесь удалить и добавить само событие cb_AppNames_SelectedIndexChanged. Это не будет работать. Вы можете добавлять и удалять метод только из события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...