(C#)入力項目Aと入力項目Bのどちらか片方だけが入力されていない状態を入力チェック

f:id:canning:20190502085951p:plain:w600

2つの入力項目があって、どちらか片方に入力があれば、もう片方にも入力を求めたいとき。

github.com


目次

普通に書く

if文で普通に書くとこんな感じ。

        private void IfCheck(object sender, RoutedEventArgs e)
        {
            isBox1NullFlg = String.IsNullOrEmpty(this.TextBox1.Text);
            isBox2NullFlg = String.IsNullOrEmpty(this.TextBox2.Text);

            if (!isBox1NullFlg)
            {
                if (isBox2NullFlg)
                {
                    MessageBox.Show("未入力項目があります");
                }
            }
            if (!isBox2NullFlg)
            {
                if (isBox1NullFlg)
                {
                    MessageBox.Show("未入力項目があります");
                }
            }  
        }

でも、なんか冗長な感じがする…

工夫する

f:id:canning:20190502090345p:plain

実現したいのは、こういうことなんだから、排他的論理和を使えばすっきりする。

        private void XORCheck(object sender, RoutedEventArgs e)
        {
            isBox1NullFlg = String.IsNullOrEmpty(this.TextBox1.Text);
            isBox2NullFlg = String.IsNullOrEmpty(this.TextBox2.Text);

            if (isBox1NullFlg ^ isBox2NullFlg)
            {
                MessageBox.Show("未入力項目があります");
            }
        }

資格の知識なんかでも、持っておいて損はないな、と思います。