2011-03-15 4 views
1

私は、テーブルに関連付けられたFieldNames(別のチェックリストボックス)を表示するためにチェックリストボックスを使用しています。複数のチェックリストボックスが動的に生成され、このアイテムのいずれかをチェックするとイベント「OnCheckListBoxItemCheck」が発生します。ここでチェックされている現在の項目はオブジェクト '送信者'から取得されます。疑問は、動的チェックリストボックスからチェックされたアイテムとclbtablesからチェックされたアイテムをどのように関連付けることができるのでしょうか?助けてください...2つのチェックリストボックスアイテムをリンクするには?

private void clbTables_ItemCheck(object sender, ItemCheckEventArgs e) 
    { 

     int indexofselectedtable; 
     indexofselectedtable = Convert.ToInt32(clbTables.SelectedIndex); 
     Metadata metadataobj = new Metadata(dbProperties); 
     List<string> ColumnNames = new List<string>(); 
     ColumnNames = metadataobj.GetColumns(clbTables.Items[indexofselectedtable].ToString()); 
     chklistcolumns = new CheckedListBox(); 

     //Adds to the Checked ListBox 
     for (int j = 0; j < ColumnNames.Count; j++) 
     { 

      chklistcolumns.Items.Add(ColumnNames.ElementAt(j).ToString()); 
     } 

     this.Controls.Add(chklistcolumns); 
     //To fire event for a dynamically generated column checklistboxes 
     chklistcolumns.ItemCheck += new ItemCheckEventHandler(OnCheckListBoxItemCheck); 
    } 
private void OnCheckListBoxItemCheck(object sender, ItemCheckEventArgs args) 
    { 
      Columns columnobj = new Columns(); 
      columnobj.ColumnName = this.chklistcolumns.SelectedItem.ToString(); 
      columnobj.TableName = this.clbTables.SelectedItem.ToString(); 
      selectedColumnsList.Add(columnobj); 

    } 
+0

また、1つのリスト内の複数のチェックボックスがオンになっているとどうなりますか? – Bazzz

+0

私はthis.chklistcolumnsを使用しているので、1つのリスト内の複数のチェックボックスでうまく動作します...イベントを発生させるオブジェクトの列名を認識するにはどうすればいいですか?私はchklistcolumnsの名前をテーブルの選択された項目に変更します。それをオブジェクトの送信者から取得する方法はありますか? – NewBie

+0

'Control cnt =((CheckBox)sender).Parent'? – Achilleterzo

答えて

1

これは多分あなたが望むものですか?

checkedListBox1.Items.Add("test"); 
checkedListBox1.ItemCheck += new ItemCheckEventHandler(checkedListBox1_ItemCheck); 

.... 

void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) 
{ 
    Console.WriteLine(((CheckedListBox)sender).Name + " is the father of item nr: " + e.Index); 
    Console.WriteLine("The value of element nr " + e.Index + " is " + ((CheckedListBox)sender).Items[e.Index].ToString()); 
} 
+0

はい、これは... Thanx :) – NewBie

関連する問題