Pergunta

No momento eu tenho a configuração um ok costume cancelar diálogo com uma drop down no c #. O botões OK e Cancelar usar a propriedade DialogResult de modo nenhum código por trás dele. O que eu agora precisa fazer é validar o drop down para verificar se não for deixado vazio antes de postar de volta um DialogResult.

Isso é possível?

Foi útil?

Solução

A partir aqui

Clique duas vezes no campo de Encerramento, e implementá-lo da seguinte forma:

private void Second_Closing(object sender, 
        System.ComponentModel.CancelEventArgs e)
{
    // When the user attempts to close the form, don't close it...
    e.Cancel = (dropdown.selecteditemindex >= 0);
}

Outras dicas

Desativar botão seu OK até que a caixa de combinação é alterada para um valor válido.

Se você quiser cheque para alguma coisa, você allways precisa de algum código por trás do designer. Para o seu caso, você pode usar um "Fechar" evento na forma, verifique o que você precisa e se você quiser, set "e.Cancel = true;" -., Em seguida, formulário não será fechado

O que eu fiz para isso é não definir o DialogResult no botão OK, mas colocar algum código por trás do botão.

private void OkButton_Clicked(object sender, EventArgs e)
{
    this.DialogResult = ValueComboBox.SelectedIndex >= 0
        ? DialogResult.Ok
        : DialogResult.None;
}

Você pode continuar usando o OK e Cancelar funcionalidade do botão de diálogos, e, em seguida, colocar esse código no manipulador clicado para o botão OK:

private void OkButton_Clicked(object sender, EventArgs e)
{
    if (!IsValid()) {
        this.DialogResult = System.Windows.Forms.DialogResult.None;
    }
}

No código acima, IsValid() é um método que você tem de implementar, que valida os campos de entrada na caixa de diálogo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top