Как заблокировать код до обработчика событий C # - PullRequest
0 голосов
/ 17 мая 2018

Я ищу метод для блокировки моего кода, пока не будет запущен обработчик событий.

Мой код похож на ниже:

private void extendBt_Click(object sender, EventArgs e)
{
    DisplayPrompt("Select a Construction line (L) or Two point (P) to extend");

    // I want this code is blocked here, then user must press on P or L to continue

    this.KeyPress += new KeyPressEventHandler(keypressed); 

    if (key == "p")
    {
        // Method "P";
    }
    if (key == "l")
    {
        // Method "L";
    }
    else // If L or P aren't pressed => How to return to the select event on keyboard  ?
}

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Ну, вам не нужно отключать событие, если вы нажали Arent, потому что ничего не произойдет, чем.

Но если вы хотите отключить его, используйте следующий код:

    private void extendBt_Click(object sender, EventArgs e)
    {
         DisplayPrompt("Select a Construction line (L) or Two point (P) to extend");

         // I want this code is blocked here, then user must press on P or L to continue

          this.KeyPress += new KeyPressEventHandler(keypressed); 

         if (key == "p")
         {
             // Method "P";
         }
         if (key == "l")
         {
             // Method "L";
         }
        else 
        {
             this.KeyPress -= new KeyPressEventHandler(keypressed); 
        }    
    }
0 голосов
/ 17 мая 2018

Похоже, это приложение на основе форм Windows, основанное на KeyPressEventHandler.

Из POV пользовательского интерфейса, форма должна иметь RadioButton или Combobox, чтобы пользователь мог сделать выбор. Пока это не сделано, отключите кнопку расширения.

Если вы хотите придерживаться этого способа, вам нужно будет создать другую форму и поместить туда элементы выбора. При нажатии кнопки отобразите эту пользовательскую форму, используя ShowDialog, и когда пользователь выбирает, основываясь на этом, верните DialogResult в основную форму. Вы можете выбрать да / нет для P / L и затем обработать соответственно.

Тебе вообще не нужен KeyPressEventHandler.

...