我按照常规方法构筑CombodtBind里有数据,只不过下面代码里没包含,确定value列有个100.1的值
但是当我给SelectedValue赋值之后,它还是为空
更奇怪的是items.Count始终为零
怎么回事啊
            DataTable dtBind = new DataTable();            dtBind.Columns.Add("value");
            dtBind.Columns.Add("name");            cmbWave.DisplayMember = "name";
            cmbWave.ValueMember = "value";
            cmbWave.DataSource = dtBind;            cmbWave.DropDownStyle = ComboBoxStyle.DropDownList;
            cmbWave.SelectedValue = "100.1";

解决方案 »

  1.   

    一个先后的问题吧。你把这段代码写在Form的构造函数里试试。
      

  2.   

    cmbWave.SelectedText="100.1";  LZ你写错了。仔细看了一下。
      

  3.   

    使用dtBind.Rows.Add("");  没有给列赋值怎么会显示呢
      

  4.   

    不好意思呀。Winform我搞的不多。  测试后 还是这个管用
    cmbWave.Items.Add("100.1");
    cmbWave.Text = "100.1";
      

  5.   

    sorry。LZ,没看仔细,其实要让combobox里的值显示为某一个值,只要让cmbWave.Text = "100.1";
      

  6.   

    我用的是DataSource的方式构筑,而不是Items的Add方法
      

  7.   

    经测试,没有问题,请查看你所绑定的数据源是否正确!
     DataTable dtBind = new DataTable();            dtBind.Columns.Add("value");
                dtBind.Columns.Add("name");
                
                for (int i = 0; i < 10; i++)
                {
                    DataRow dr = dtBind.NewRow();
                    dr[0] = i;
                    dr[1] = "temp_"+i.ToString();
                    dtBind.Rows.Add(dr);
                }            cmbWave.DisplayMember = "name";
                cmbWave.ValueMember = "value";
                cmbWave.DataSource = dtBind;            cmbWave.DropDownStyle = ComboBoxStyle.DropDownList;
                cmbWave.SelectedValue = "3";//定位在 temp_3上 没有问题
      

  8.   

    我说了,写数据的代码没贴过来
    这个放心,肯定有值,因为我Debug的时候看过DataSource的值,确实有值
      

  9.   

    LZ。你dtBind.Columns.Add(),这个是增加列的方法,里面有列。可是没有值呀。Count=0好像也正常呀。、你的Designer里的代码也贴出来看看吧
      

  10.   


    private void DynamicCreateWave(int index, string strPar, string strMax, string strMin )
            {
                string strParName = string.Empty;            string strUnit = string.Empty;            if (strPar != null && strPar.Length > 0)
                {
                    DataRow[] drRows = dtparameter.Select("Par=" + strPar);                if (drRows.Length > 0)
                    {
                        strParName = drRows[0]["ParName"].ToString().Trim();                    strUnit = drRows[0]["ParUnit"].ToString().Trim();
                    }
                }            System.Windows.Forms.GroupBox grpWave;
                ZedGraph.ZedGraphControl wave;
                System.Windows.Forms.TextBox txtMaxPeak;
                System.Windows.Forms.TextBox txtMinPeak;
                System.Windows.Forms.ComboBox cmbWave;
                System.Windows.Forms.Label lblWaveUnit;            grpWave = new System.Windows.Forms.GroupBox();
                wave = new ZedGraph.ZedGraphControl();
                txtMaxPeak = new System.Windows.Forms.TextBox();
                txtMinPeak = new System.Windows.Forms.TextBox();
                cmbWave = new System.Windows.Forms.ComboBox();
                lblWaveUnit = new System.Windows.Forms.Label();
                grpWave.SuspendLayout();
                SuspendLayout();
                // 
                // grpWave
                // 
                grpWave.Controls.Add(wave);
                grpWave.Controls.Add(txtMaxPeak);
                grpWave.Controls.Add(txtMinPeak);
                grpWave.Controls.Add(cmbWave);
                grpWave.Controls.Add(lblWaveUnit);
                grpWave.Location = new System.Drawing.Point(60, 100 + 170 *(index - 1));
                grpWave.Name = "grpWave_" + index.ToString();
                grpWave.Size = new System.Drawing.Size(511, 168);
                grpWave.TabIndex = 14;
                grpWave.TabStop = false;
                grpWave.Text = strPar + " " + strParName + " Wave";
                // 
                // wave
                // 
                wave.Location = new System.Drawing.Point(6, 43);
                wave.Name = "wave_" + index.ToString();
                wave.ScrollGrace = 0;
                wave.ScrollMaxX = 0;
                wave.ScrollMaxY = 0;
                wave.ScrollMaxY2 = 0;
                wave.ScrollMinX = 0;
                wave.ScrollMinY = 0;
                wave.ScrollMinY2 = 0;
                wave.Size = new System.Drawing.Size(434, 119);
                wave.TabIndex = 6;
                // 
                // txtMaxPeak
                // 
                txtMaxPeak.Location = new System.Drawing.Point(455, 43);
                txtMaxPeak.Name = "txtMaxPeak_" + index.ToString();
                txtMaxPeak.Size = new System.Drawing.Size(29, 21);
                txtMaxPeak.TabIndex = 8;
                txtMaxPeak.Text = strMax;
                // 
                // txtMinPeak
                // 
                txtMinPeak.Location = new System.Drawing.Point(455, 141);
                txtMinPeak.Name = "txtMinPeak_" + index.ToString();
                txtMinPeak.Size = new System.Drawing.Size(29, 21);
                txtMinPeak.TabIndex = 8;
                txtMinPeak.Text = strMin;
                // 
                // cmbWave
                // 
                cmbWave.FormattingEnabled = true;
                cmbWave.Location = new System.Drawing.Point(10, 13);
                cmbWave.Name = "cmbWave_" + index.ToString();
                cmbWave.Size = new System.Drawing.Size(430, 20);
                cmbWave.TabIndex = 9;
                // 这里面构筑三条数据
                GetDataSource(dtparameter, "Par", "ParName", "ParUnit", ref cmbWave);
                cmbWave.DropDownStyle = ComboBoxStyle.DropDownList;
                cmbWave.SelectedValue = strPar;
                // 
                // lblWaveUnit
                // 
                lblWaveUnit.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
                lblWaveUnit.Location = new System.Drawing.Point(455, 96);
                lblWaveUnit.Name = "lblWaveUnit_" + index.ToString();
                lblWaveUnit.Size = new System.Drawing.Size(29, 23);
                lblWaveUnit.TabIndex = 10;
                lblWaveUnit.Text = strUnit;
                lblWaveUnit.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
                // 
                // SampleForm
                // 
                this.splitContainer2.Panel1.Controls.Add(grpWave);
                grpWave.ResumeLayout(false);
                grpWave.PerformLayout();            this.splitContainer2.Panel1.ResumeLayout(false);
                this.splitContainer2.Panel1.PerformLayout();
                this.splitContainer2.ResumeLayout(false);
                this.ResumeLayout(false);
            }
      

  11.   

    就是往画面里动态增加控件的代码,Debug里都能看得到DataSource里有3条数据
      

  12.   

    http://blog.csdn.net/keenweiwei/article/details/6972582
      

  13.   

    光加cloumn没有加Row,不空才怪
      

  14.   

    知道原因了
    必须得把COmboBox 加入到Form的任何控件,也就是当它属于这个Form的时候才可以往SelectedValue赋值的。
    也就是赋值前先写如下代码this.splitContainer2.Panel1.Controls.Add(ComboBox);这个代码一直在最后几行,所以一直设不上
      

  15.   

    好好看文章可以吗?
    我都生活了加ROW的部分代码没贴出来。唉
    那么低级错误就不发到这里来了
      

  16.   

    你看赋过值后有没有清空Combox,8楼的方法可行