C # Como posso verificar para ver se uma caixa de seleção está marcada em outra forma?

StackOverflow https://stackoverflow.com/questions/1410923

  •  05-07-2019
  •  | 
  •  

Pergunta

Eu estou usando C # e eu gostaria de verificar para ver se uma caixa de seleção no formulário principal está marcada e se assim for executar algum código, o problema é que eu estou em um arquivo de classe (arquivo com nenhuma forma, é arquivo de classe correto?). Qual é a maneira mais fácil de fazer isso?

Graças Jamie

Foi útil?

Solução

A melhor opção é criar uma propriedade boolean no formulário que expõe o valor Checked do CheckBox.

public bool OptionSelected
{
    get { return checkBox.Checked; }
    set { checkBox.Checked = value; } // the set is optional
}

Outras dicas

Você precisa de uma referência para o formulário e o formulário tem de expor a caixa de seleção (ou uma propriedade que consulta a caixa de seleção).

Não há nenhuma diferença entre a programação UI e programação não-UI a este respeito. Como iria pedir a propriedade Name de uma instância Person de uma classe diferente? Você deseja obter uma referência à instância, e pedir para a propriedade relevante.

Então, você definitivamente precisa de uma referência para o formulário e, em seguida, é um dos seguintes:

bool checked = form.IsAdultCheckbox.Checked;
bool checked = form.IsAdult; 

(onde a propriedade IsAdult voltaria someCheckbox.Checked.)

Os nomes das propriedades reais podem ser errado aqui (por exemplo Checked não pode retornar um bool), mas eu espero que você começa a idéia.

Você pode definir uma interface com uma propriedade, tem a forma de implementar a interface e retornar true se a caixa está marcada, e passar uma instância desta interface para sua classe?

Por exemplo:

interface IMyFormFlag
{
    bool IsChecked { get; }
}

public class MyForm : Form, IMyFormFlag
{
    CheckBox chkMyFlag;

    bool IsChecked { get { return chkMyFlag.Checked; } }
}

public class MyObject
{
    public void DoSomethingImportant(IMyFormFlag formFlag)
    {
        if (formFlag.IsChecked)
        {
            // do something here
        }
    }
}

Pessoalmente, eu não gosto de usar set ou obter. Eu fiz isso como este:

if (checkBox.IsChecked.Equals(true))
{
//insert code here
}

Você pode usar isso funciona bem para mim

    if (Convert.ToBoolean(CheckBox1.IsChecked))
      {
         MessageBox.Show("true");
      }
    else
       {
         MessageBox.Show("false"); 
       }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top