C#チェックボックスが別のフォームでチェックされているかどうかを確認するにはどうすればよいですか?

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

  •  05-07-2019
  •  | 
  •  

質問

C#を使用していますが、メインフォームのチェックボックスがオンになっているかどうかを確認したいので、コードを実行すると、問題はクラスファイル(フォームのないファイル、クラスファイルは正しいですか?)。これを行う最も簡単な方法は何ですか?

ありがとう ジェイミー

役に立ちましたか?

解決

最良のオプションは、 CheckBox Checked 値を公開する boolean プロパティをフォームに作成することです。

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

他のヒント

フォームへの参照が必要で、フォームはチェックボックス(またはチェックボックスを参照するプロパティ)を公開する必要があります。

この点では、UIプログラミングと非UIプログラミングに違いはありません。別のクラスの Person インスタンスの Name プロパティをどのように要求しますか?インスタンスへの参照を取得し、関連するプロパティを要求します。

だから、あなたは間違いなくフォームへの参照を必要とし、それは次のいずれかです:

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