質問: 現在、Visual StudioのWindows Forms (C#) でプログラムを作成しています。 作成したいプログラムとしては、 ・コンボボックスで選択肢から1つ選ぶ →テキストボックスに数字を入力する →ボタンを押す です。 ◆実現したいこと 2つの項目に関して、どちらか一方でもNullであった場合にボタンを押せないようにする (全て入力済でないと、ボタンを押せないようにする) 項目は、1つはコンボボックス、もう1つはテキストボックスです ◆伺いたいこと 上記の機能は実現可能か 実現可能であるならば、どのようなコードを書くことで実装できるのか まだまだC#の初心者ですが、よろしくお願いいたします。
回答: こんな風に考えられます。 * 要望のとおりに押せないようにする + 初期状態ではButton.Enabled=falseとする + ComboBoxとTextBoxの両方のTextChangedイベントにイベントハンドラを登録する + それらのイベントハンドラでは、両方のコントロールのTextプロパティが有効なデータかどうかの判定(IsNullOrEmpty/IsNullOrWhiteSpace)を行い、両方とも有効なデータだった場合にButton.Enabled=trueとする。どちらか一方でも無効なデータだった場合はButton.Enabled=falseとする。 * 押せるが動作しないようにする + Buttonのclickイベントのイベントハンドラの先頭で、ComboBoxとTextBoxの両方のTextプロパティが有効なデータかどうかの判定を行い、両方とも有効なデータだった場合にButton押下時の処理を行う。どちらか一方でも無効なデータだった場合は処理は行わず、警告/ガイド表示等を行ってイベントハンドラを終了する。