2017-03-22 16 views
-2

コンボボックスの選択に基づいてリストボックスに特定のリストを表示するために、コンボボックスの選択を使用しようとしています。私はC#を使用しています。私は、2つのタイプのエラーを受け取ります。それぞれのエラーは、if文ごとに1つずつです。ここでコンボボックスの選択に基づいてリストボックスにリストを表示するコンボボックスをコーディングするにはどうすればよいですか?

2つのエラーコードは次のとおりです。

エラーCS0266は、暗黙のうちに「ブール」に型「オブジェクト」に変換できません。明示的な変換が存在する(あなたはキャストが欠けている?)

エラーCS0029は、暗黙的に「文字列」に型「System.Collections.Generic.List」を変換できません

をここに私が取り組んできたコードの例です。いくつかのエラーと間違いを修正した後、私は解決策を探すことからここまで絞り込んだ。私は受け取ったエラーに明確な解決策を見つけることができません。

private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 


     ComboBox1.Items.Add("W"); 
     ComboBox1.Items.Add("X"); 
     ComboBox1.Items.Add("Y"); 
     ComboBox1.Items.Add("Z"); 


     String var; 
     var = ComboBox1.Text; 


     List<String> WList = new List<String>(){"W1", "W2", "..."}; 

     List<String> XList = new List<String>(){"X1", "X2", "..."}; 

     List<String> YList = new List<String>(){"Y1", "Y2", "..."}; 

     List<String> ZList = new List<String>(){"Z1", "Z2", "..."}; 


     if (ComboBox1.SelectedItem="W") 
     { 
     ListBox1.DisplayMember = WList; 
     } 

     if(ComboBox1.SelectedItem="X") 
     { 
     ListBox1.DisplayMember = XList; 
     } 

     if(ComboBox1.SelectedItem="Y") 
     { 
     ListBox1.DisplayMember = YList; 
     } 

     if (ComboBox1.SelectedItem="Z") 
     { 
     ListBox1.DisplayMember = ZList; 
     } 

     else 
     { 
     ListBox1.Text = ""; 
     } 
+1

選択を行うときにコンボボックスに項目を追加していますか?それは意味をなさない。これは奇妙に見えます: 'var = ComboBox.Text;'あなたは4つのリストで何もしていません。 DisplayMemberは、DataSourceの* Property *用です。 – LarsTech

+0

おそらく、DisplayMemberではなくDataSourceプロパティを設定したいとします。しかし、それらのX、Y、Z、WItemsは何ですか?あなたはX、Y、Z、WListを持っています – Steve

答えて

0

1)文字列を比較する場合、==演算子を使用し、演算子=演算子を使用する必要はありません!

if(ComboBox1.SelectedItem="W") 

を変更してください:ユーザーが項目を選択し、あなたにComboBoxアイテムZ、あなたがW、X、Yを追加している理由を私は理解していない

if(ComboBox1.SelectedItem == "W") 

毎回が、してくださいR)

if (ComboBox1.SelectedItem == "W") 
{ 
    ListBox1.DataSource= WList; 
} 

2:あなたのリストボックスにリストを取得するには、あなたは、このようDataSourceプロパティを使用する必要がありますemoveあなたのコードのこの部分:

String var; 
var = ComboBox.Text; 

varは、キーワードで、変数の名前として使用すべきではありません! ComboBoxはクラス名であり、インスタンス名はComboBox1ではありません。 ComboBoxには静的プロパティTextがありません!インスタンスComboBox1だけがという名前になっています。あなたはComboBox1_SelectedIndexChangedイベントハンドラの範囲外のリストを宣言する必要があります)

string temp = ComboBox1.Text; 

3に変更してください。それ以外の場合は、コンボボックス内の項目を選択するたびに、毎回不必要に作成します。

+0

また、その文字列定義が2行にある理由もなく、変数ではなく 'ComboBox'クラスのいくつかの静的プロパティ' Text'にアクセスしようとしているようで、文字列varは決して後で使用されることはありません。 – Nyerguds

+0

@Nyerguds私はちょうど同じ点を認識し、情報を追加しました –

+0

btw 'ComboBox1.SelectedItem =" W "'は '=='であるべきです、または彼は同じ間違いを得るでしょう。 – CNuts

0

あなたはコンボボックスの変更にたびに選択を新しいアイテムを追加したい場合は、選択のあなたのコンボボックスに新しいアイテムを追加すべきではないまず第一にしない限り、変更しました。私はあなたがしようとしているとは思わない。また、選択した変更イベント以外の場所で、そのストリングのリストを準備する必要があります。

だからあなたのコンボボックスの項目を追加することで起動し、Form1のコンストラクタのようにすべてを初期化し、あなたのList<string>

List<String> WList; 

List<String> XList; 

List<String> YList; 

List<String> ZList; 

public Form1() 
{ 
    InitializeComponent(); 

    comboBox1.Items.Add("W"); 
    comboBox1.Items.Add("X"); 
    comboBox1.Items.Add("Y"); 
    comboBox1.Items.Add("Z"); 

    WList = new List<String>() { "W1", "W2", "..." }; 

    XList = new List<String>() { "X1", "X2", "..." }; 

    YList = new List<String>() { "Y1", "Y2", "..." }; 

    ZList = new List<String>() { "Z1", "Z2", "..." }; 
} 

また、あなたは、なぜあなたは

を取得しているの価値観を比較する =を使用しています

エラーCS0266 'オブジェクト'を暗黙的に 'bool'に変換できません。明示的な変換があります(キャストがありませんか?)

2つの値が等しいかどうかを確認するには、==を使用してください。

private void comboBox1_SelectedIndexChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if(comboBox1.SelectedItem.ToString() == "W") 
    { 
     listBox.DataSource= WList; 
    } 
    else if(comboBox1.SelectedItem.ToString() == "X") 
    { 
     listBox.DataSource= XList; 
    } 
    else if (comboBox1.SelectedItem.ToString() == "Y") 
    { 
     listBox.DataSource= YList; 
    } 
    else if (comboBox1.SelectedItem.ToString() == "Z") 
    { 
     listBox.DataSource= ZList; 
    } 
} 

はその後 comboBox1_SelectedIndexChangedですべてを行う必要が選択されている値を確認し、 DataSourceを調整し、同時にあなたの combobox 2に等しい値を持つことは決してないだろうので、その優れた else ifを使用することです
+0

OPはWPFを使用していますか? –

+0

yaはそれを実現していませんでしたが、おそらくwinformsを使用しています。私はそれを編集しますありがとう。 @MongZhu – CNuts

+0

@Confused問題はない、私はそれが助けて嬉しいです。 – CNuts

関連する問題