質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

9957閲覧

C# コンボボックスが空のときにエラーを表示させる

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/07/25 06:58

Windowsフォームアプリケーションを作成しています。
コンボボックスで指定したホストに接続してDBとDBのテーブル一覧を表示させるのですが、

ホスト名が未入力の際はエラーメッセージを表示し、
指定されたホストが存在しない場合はエラーメッセージを表示させたいです。

ですが、下のようなコードを書いても
うまく通りません。

C#

1 private void button1_Click(object sender, EventArgs e) 2 { 3 4 if (comboBox1.SelectedItem != null && comboBox1.Text != null) 5 { 6 try 7 { 8 string tmpCon = "server={0};uid={1};pwd={2}"; 9 con = new MySqlConnection(); 10 con.ConnectionString = 11 String.Format(tmpCon, 12 comboBox1.Text, userID, password); 13 com = new MySqlCommand(); 14 com.Connection = con; 15 16 com.CommandText = "SHOW DATABASES;"; 17 con.Open(); 18 dtr = com.ExecuteReader(); 19 20 listBox1.Items.Clear(); 21 22 while (dtr.Read()) 23 { 24 listBox1.Items.Add(dtr[0]); 25 } 26 27 comboBox1.Items.Add(comboBox1.Text); 28 29 dtr.Close(); 30 con.Close(); 31 } 32 catch (NullReferenceException e1) 33 { 34 MessageBox.Show(e1.Message); 35 } 36 catch (Exception e1) 37 { 38 MessageBox.Show(e1.Message); 39 } 40 } 41 else 42 { 43 MessageBox.Show("未入力"); 44 } 45

未入力のときは未入力と表示されますが、
コンボボックスに意味のない文字列やIPアドレスを入力したときも未入力と出力されてしまいます。
未入力の際は未入力と、存在しないホストが入力された際は存在しないホストです等といったエラーを表示させるにはどうしたらよいでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

以下でどうでしょう。

C#

1if (comboBox1.SelectedItem != null || string.IsNullOrEmpty(comboBox1.Text) == false ) 2{ 3 4 5} 6else 7{ 8 MessageBox.Show("未入力"); 9} 10

投稿2017/07/25 07:34

ebiryo

総合スコア797

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koguma98

2017/07/25 07:38

この式も考えたのですが、これだと空白の選択肢を選択していた場合に未入力と表示されないですよね?
退会済みユーザー

退会済みユーザー

2017/07/25 07:38

しっかりと動きました!ありがとうございます!
guest

0

C#

1if (comboBox1.SelectedItem != null && comboBox1.Text != null) 2 3```だと、どちらも満たすときのみDB接続しますが、どちらも満たさない場合があります。 4このため、 5```C# 6if (comboBox1.SelectedItem == null || comboBox1.Text == "") 7 8```とし、ifelseの処理を入れ替えてはどうでしょうか?

投稿2017/07/25 07:12

koguma98

総合スコア288

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/07/25 07:22

if文を変更し、処理を入れ替えましたが、 IPアドレスを入力した際も、適当な文字列を入力した際も未入力と表示されてしまいました。
koguma98

2017/07/25 07:34

もう少し条件を分割する必要がありましたね... if (comboBox1.Text == "") { MessageBox.Show("未入力"); } else if(comboBox1.SelectedItem == null && comboBox1.Text == "") { MessageBox.Show("未入力"); } else { MessageBox.Show("入力"); } という形でどうでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問