我按照常规方法构筑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";
但是当我给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";
cmbWave.Items.Add("100.1");
cmbWave.Text = "100.1";
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上 没有问题
这个放心,肯定有值,因为我Debug的时候看过DataSource的值,确实有值
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);
}
必须得把COmboBox 加入到Form的任何控件,也就是当它属于这个Form的时候才可以往SelectedValue赋值的。
也就是赋值前先写如下代码this.splitContainer2.Panel1.Controls.Add(ComboBox);这个代码一直在最后几行,所以一直设不上
我都生活了加ROW的部分代码没贴出来。唉
那么低级错误就不发到这里来了