C # Как я могу проверить, установлен ли флажок в другой форме?

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

  •  05-07-2019
  •  | 
  •  

Вопрос

Я использую C #, и я хотел бы проверить, установлен ли флажок в основной форме, и если да, запустите какой-нибудь код, проблема в том, что я нахожусь в файле класса (файл без формы, правильный ли файл класса?).Какой самый простой способ сделать это?

Спасибо Джейми

Это было полезно?

Решение

Лучшим вариантом является создание boolean свойство в форме, которое предоставляет Checked значение CheckBox.

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

Другие советы

Вам нужна ссылка на форму, и форма должна выставлять флажок (или свойство, которое обращается к флажку).

В этом отношении нет никакой разницы между программированием пользовательского интерфейса и программированием без пользовательского интерфейса.Как бы попросить о Name свойство a Person экземпляр из другого класса?Вы получите ссылку на экземпляр и запросите соответствующее свойство.

Таким образом, вам определенно нужна ссылка на форму, и тогда это один из:

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

(Где IsAdult собственность вернулась бы someCheckbox.Checked.)

Фактические названия свойств здесь могут быть неправильными (например Checked может не вернуть bool) но я надеюсь, что вы уловили идею.

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

Например:

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
        }
    }
}

Лично мне не нравится использовать set или get .Я сделал это вот так:

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

вы можете использовать это, у меня это прекрасно работает

    if (Convert.ToBoolean(CheckBox1.IsChecked))
      {
         MessageBox.Show("true");
      }
    else
       {
         MessageBox.Show("false"); 
       }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top