在 Windows窗体中,它有一个 ComboBox ,它有数据绑定的数据。
当要为ComboBox设置text属性时。
选定的ComboBox - >财产 - >文字:" - 选择 - "。
设计页面显示给定的文本。但是当运行应用程序时,给定的文本消失,并且出现了一个comboBox项的初始索引值,它来自DataSource。
所以我在Form加载中给出了ComboBox文本。我的意思是在构造函数
public myform()
{
InitializeComponent();
ComboBox.Text="--Select--";
}
链接修订等。但是..
Setting default item in combo box
https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.text(v=vs.110).aspx
在SO中搜索了很多问题取决于ComboBox。但那些永远无法解决我的问题
被修改
在该组合框中,单击右上角,从我为我的组合框选择的数据使用Datasouce。我没有写任何代码来添加项目到组合框中。
答案 0 :(得分:9)
您可以这样做:
public myform()
{
InitializeComponent(); // this will be called in ComboBox ComboBox = new System.Windows.Forms.ComboBox();
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'myDataSet.someTable' table. You can move, or remove it, as needed.
this.myTableAdapter.Fill(this.myDataSet.someTable);
comboBox1.SelectedItem = null;
comboBox1.SelectedText = "--select--";
}
答案 1 :(得分:2)
假设您将组合框绑定到List<Person>
List<Person> pp = new List<Person>();
pp.Add(new Person() {id = 1, name="Steve"});
pp.Add(new Person() {id = 2, name="Mark"});
pp.Add(new Person() {id = 3, name="Charles"});
cbo1.DisplayMember = "name";
cbo1.ValueMember = "id";
cbo1.DataSource = pp;
此时您无法根据需要设置Text属性,而是需要在设置数据源之前将项添加到列表中
pp.Insert(0, new Person() {id=-1, name="--SELECT--"});
cbo1.DisplayMember = "name";
cbo1.ValueMember = "id";
cbo1.DataSource = pp;
cbo1.SelectedIndex = 0;
当然,这意味着当您尝试使用组合框中的信息时需要添加检查代码
if(cbo1.SelectedValue != null && Convert.ToInt32(cbo1.SelectedValue) == -1)
MessageBox.Show("Please select a person name");
else
......
如果使用DataTable而不是列表,则代码相同。您需要在数据表的Rows集合的第一个位置添加一个假行,并设置组合框的初始索引以使其清晰。您需要查看的唯一事项是数据表列的名称以及在将行添加到集合之前哪些列应包含非空值
在包含ID,FirstName,LastName以及ID,FirstName和LastName三个列的表中,您需要
DataRow row = datatable.NewRow();
row["ID"] = -1;
row["FirstName"] = "--Select--";
row["LastName"] = "FakeAddress";
dataTable.Rows.InsertAt(row, 0);