2016-08-27 7 views
0

私は私のウィンドウフォームアプリケーションで4つのチェックボックスを持っており、チェックボックスのテキストを文字列関数から返すことで取得する必要がありますが、それは私に例外を与えます。関数のコードは次のとおりです。Cのチェックボックスのチェックボックスを取得する

string getPerm() 
{ 
    string perm = ""; 
    foreach(CheckBox chkb in this.Controls) 
    { 
     if(chkb.Checked==true) 
     { 
      perm += chkb.Text + ","; 
     } 
    } 
    return perm; 
} 

そして、私は、ボタンのクリックイベントに結果を表示するメッセージボックスの表示方法では、この機能を使用し、もう一つの問題は、私は結果から、最後のカンマを削除する必要があるということです...あなたがテキストを結合するためにLINQを使用することができます

+0

、それにもかかわらず、あなたはとても曖昧であってはなりません。どのような例外が発生するのか説明してください。 – Steve

+1

@Steve CheckBoxキャストのために例外がポップアップすることがあります。すべてのコントロールがCheckBoxであるとは限りません。 – greenshade

+0

if(chkbはChaeckBox && chkb.Checked == true) – TaW

答えて

3

について:

return string.Join(",", this.Controls.OfType<CheckBox>.Where(x => x.Checked).Select(x => x.Text)); 

あなたのコードはforeachループ内の暗黙のCheckBoxキャストのために働いていません。あなたのコントロールのすべてがCheckBoxであることを考えれば(これはおそらく本当です)、InvalidCastExceptionがポップアップします。 OfType<T>メソッドは、クエリで使用されるのはCheckBoxであることを確認します。

追加測定値:それは私が何を例外のアイデアを持っているEXCEPTION_を与える_but

Control.Controls

Enumerable.OfType

関連する問題