![](/img/trans.png)
[英]Maintaining combobox text after selecting a bound item in WPF / C#
[英]Selecting an item in ComboBox, which is Data bound
在我的主窗体上,有dataGridView1
,它绑定到一个数据库表。 在我的编辑表单上,有一个ComboBox
通过数据绑定从与dataGridView1
相同的数据库中获取它的项目。 在dataGridView1
单元格上双击,该编辑表单打开并填充编辑该特定行所需的所有字段。
这是我的问题:当我尝试在该编辑表单上设置ComboBox
的值时,没有任何反应。 没有报错并且没有选择ComboBox中的项目。
fDodaj nov = new fDodaj();
nov.comboBox1.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[4].Value.ToString();
if(nov.ShowDialog()==DialogResult.OK)
{
//code that updates the value in database
}
fDodaj
是我的编辑表格。 我尝试在ComboBox
上设置SelectedValue
、 SelectedItem
、 SelectedText
和Text
属性,无论如何都没有运气。
我究竟做错了什么?
PS:我不太Visual C#
,但这是针对我的学校项目的。 如果您需要更多信息,请告诉我。
将您的 ComboBox 数据绑定移动到表单的构造函数中,而不是像您当前所做的那样将其保留在 Form.Load 中。 确保在构造函数中调用InitializeComponent
之后绑定它。
这将允许您在显示对话框之前设置 ComboBox SelectedValue 或类似值。
数据绑定发生在显示的表格之后,因此当您设置所选值时,combobox 的数据源中没有任何内容 在设置所选值之前设置 combobox 的数据源
我也不擅长 Visual C#。 但是你有没有在 fDodaj 的 Form_Load 中尝试过这个。 在我看来,此时组合可能尚未初始化。
首先,公开控制不是一个好习惯,因此您可以通过 forms (或类)访问它们,就像您在示例中所做的那样: nov.comboBox1.Text将它们设为私有总是好的,并通过值(数据)给他们。 这是你应该做的:
//form1
public partial class Form1 : Form
{
DataTable table;
public Form1()
{
InitializeComponent();
table = new DataTable("myTable");
table.Columns.Add("column 1", typeof(string));
//some example data:
table.Rows.Add("a");
table.Rows.Add("b");
table.Rows.Add("c");
dataGridView1.DataSource = table;
dataGridView1.CellDoubleClick += new DataGridViewCellEventHandler(dataGridView1_CellDoubleClick);
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
string _value = dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
if (_value != String.Empty)
{
using (Form2 f2 = new Form2(_value))
{
if (f2.ShowDialog() == DialogResult.OK)
{
}
}
}
}
}
//form2:
public partial class Form2 : Form
{
public Form2(string value)
{
InitializeComponent();
//some example data in the comboBox:
comboBox1.Items.AddRange(new string[] { "a", "b", "c" });
//lets select the item which came from form1:
comboBox1.SelectedItem = value;
}
}
如果不是这样,请告诉我,将进一步帮助您。 再见
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.