2017-02-13 18 views
0

私は同様の質問を検索しましたが、私の状況には適用されませんでした。 私はリストボックスの魔法使いは、コンボボックスから選択された項目に応じてデータでいっぱいになっています。 コードは正常に機能しましたが、ソフトウェアでいくつかの変更が加えられたため、新しいフォームを作成し、デザインとコードを新しいフォームにコピー/貼り付けなければなりませんでした。 私は必要な調整を行いましたが、現在はすべてのコンボボックスが満たされリストボックスはありません。c#listboxがいっぱいでない

using System; 
using System.Data; 
using System.Windows.Forms; 
using XXXXX.bin; 
using System.Data.SqlClient; 
using System.IO; 
using System.Drawing.Imaging; 
using System.Linq; 


namespace XXXXX 
{ 
    public partial class vidro : Form 
    { 
     public static SqlConnection con = Globais.GetDbConection(); 
     public vidro() 
     { 
      InitializeComponent(); 
     } 
     private void vidro_Load(object sender, EventArgs e) 
     { 
      SqlDataAdapter SDA = new SqlDataAdapter("select distinct desempenho from vidros", con); 
      DataTable DTT = new DataTable(); 
      SDA.Fill(DTT); 
      desempenho.Items.Clear(); 
      foreach (DataRow ROW in DTT.Rows) 
      { 
       desempenho.Items.Add(ROW["desempenho"].ToString()); 
      } 

      SqlDataAdapter SDA2 = new SqlDataAdapter("select distinct valu from vidros", con); 
      DataTable DTT2 = new DataTable(); 
      SDA2.Fill(DTT2); 
      valu.Items.Clear(); 
      foreach (DataRow ROW in DTT2.Rows) 
      { 
       valu.Items.Add(ROW["valu"].ToString()); 
      } 

      SqlDataAdapter SDA3 = new SqlDataAdapter("select distinct fs from vidros", con); 
      DataTable DTT3 = new DataTable(); 
      SDA3.Fill(DTT3); 
      fsolar.Items.Clear(); 
      foreach (DataRow ROW in DTT3.Rows) 
      { 
       fsolar.Items.Add(ROW["fs"].ToString()); 
      } 

      SqlDataAdapter SDA4 = new SqlDataAdapter("select distinct sel from vidros", con); 
      DataTable DTT4 = new DataTable(); 
      SDA4.Fill(DTT4); 
      select.Items.Clear(); 
      foreach (DataRow ROW in DTT4.Rows) 
      { 
       select.Items.Add(ROW["sel"].ToString()); 
      } 

      SqlDataAdapter SDA5 = new SqlDataAdapter("select distinct compo from vidros", con); 
      DataTable DTT5 = new DataTable(); 
      SDA5.Fill(DTT5); 
      select.Items.Clear(); 
      foreach (DataRow ROW in DTT5.Rows) 
      { 
       compo.Items.Add(ROW["compo"].ToString()); 
      } 
      SqlDataAdapter SDA6 = new SqlDataAdapter("select distinct sel from vidros", con); 
      DataTable DTT6 = new DataTable(); 
      SDA6.Fill(DTT6); 
      select.Items.Clear(); 
      foreach (DataRow ROW in DTT6.Rows) 
      { 
       select.Items.Add(ROW["sel"].ToString()); 
      } 
     } 
     private void desempenho_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      FillData(); 
     } 
     private void valu_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      FillData(); 
     } 
     private void fsolar_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      FillData(); 
     } 
     private void selec_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      FillData(); 
     } 
     private void compo_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      FillData(); 
     } 
     private void FillData() 
     { 
      string combo1value = desempenho.Text; 
      string combo2value = valu.Text; 
      string combo3value = fsolar.Text; 
      string combo4value = select.Text; 
      string combo5value = compo.Text; 

      string query = "select [desc],[enchimento],[compo] from vidros where 1=1 "; 
      string queryWhere = ""; 
      SqlDataAdapter sda = new SqlDataAdapter(); 
      SqlCommand cmd = new SqlCommand(); 
      cmd.Connection = con; 
      sda.SelectCommand = cmd; 

      if (combo1value != "") 
      { 
       queryWhere += " and desempenho = @emp "; 
       sda.SelectCommand.Parameters.Add("@emp", SqlDbType.NVarChar).Value = combo1value; 
      } 
      if (combo2value != "") 
      { 
       queryWhere += " and valu = @emp2 "; 
       sda.SelectCommand.Parameters.Add("@emp2", SqlDbType.NVarChar).Value = combo2value; 
      } 
      if (combo3value != "") 
      { 
       queryWhere += " and fs = @emp3 "; 
       sda.SelectCommand.Parameters.Add("@emp3", SqlDbType.NVarChar).Value = combo3value; 
      } 
      if (combo4value != "") 
      { 
       queryWhere += " and sel = @emp4 "; 
       sda.SelectCommand.Parameters.Add("@emp4", SqlDbType.NVarChar).Value = combo4value; 
      } 
      if (combo5value != "") 
      { 
       queryWhere += " and compo = @emp5 "; 
       sda.SelectCommand.Parameters.Add("@emp5", SqlDbType.NVarChar).Value = combo5value; 
      } 

      sda.SelectCommand.CommandText = query + queryWhere; 

      DataTable DTT = new DataTable(); 

      sda.Fill(DTT); 
      listView1.Items.Clear(); 
      for (int i = 0; i < DTT.Rows.Count; i++) 
      { 
       DataRow dr = DTT.Rows[i]; 
       ListViewItem listitem = new ListViewItem(dr["desc"].ToString()); 
       listitem.SubItems.Add(dr["enchimento"].ToString()); 
       listitem.SubItems.Add(dr["compo"].ToString()); 
       listView1.Items.Add(listitem); 
      } 
     } 
+0

もしあなたが同じものをコピーしてしまった場合は、イベントハンドラをコンボボックスに接続するのを忘れている可能性がありますか? – EpicKip

+0

@EpicKipこんにちは、それは、ありがとうございました。 – septaug

+0

これは簡単な修正であり、フォームを再作成した人にも一般的な回答を投稿して – EpicKip

答えて

3

あなたがコントロールのためにあなたのイベントハンドラをフックする必要があります。新しいフォームにコードを転送しているので: はanyoeコードがある理由、と言うことができます。

これは、コントロールを選択し、実行してそのイベント]タブ(プロパティの近くに雷形状)
enter image description here

やコード内に行くことによって、デザイナーで行うことができますcontrolName.EventName += eventHandlerMethodName;
例:button1.Click += button1_Click;

2

コントロール名(ComboBoxとListbox)がコピーされたコードと同じであることを確認し、その後の各コントロールのイベントリスナーを追加します。

関連する問題