应用程序的高级 View 是:
- Form1 在 DataGridView 中显示客户信息(从数据库中提取)。
- 我将来自 DataGridView 的客户信息保存在位于 Client 类的属性中。
- 在 Form1 中,用户可以单击一个按钮来实例化 Form2 并允许修改客户端的信息。
- Form2 的构造函数有一个 Client 对象作为参数。该对象保存了来自 Form1 的所有客户信息。使用此对象,我可以重新填充我希望用户能够在 Form2 上编辑的字段。
DataSource 中有一个表,其中包含所有案例类型(即 CaseType1、CaseType2、CaseType3)。
然后,我使用 ComboBox 并在实例化表单时使用 DataSource 中的所有案例类型填充它。我的 ComboBox 设置如下:
DataSource:设置为我的 CaseTypeBindingSource,其中包含我需要的列和数据。 DisplayMember:正在使用的查询结果。 ValueMember:正在使用的查询结果。 (与 DisplayMember 相同) SelectedValue:我试过用“none”和与 DisplayMember 和 ValueMember 相同的值。
问题是:
在运行时,我希望能够将从 Form1 带来的客户端案例类型分配为当前在 ComboBox (SelectedItem) 中选择的项目。
我可以将案例类型分配给文本框并完成它。但我的想法是,我希望表单向用户显示客户的案例类型是什么,并允许他/她使用 ComboBox 来更改它。
ComboBox 名称是 CaseTypeComboBox。保存案例类型信息及其属性的对象是 client.CaseType。
我在构造函数中尝试了以下内容:
CaseTypeComboBox.SelectedItem = client.CaseType;
我还尝试在 Form2 中创建一个名为 origCaseType 的类变量,将 client.CaseType 值分配给构造函数中的 origCaseType 类变量。然后在 Form2_Load(...) 事件触发时执行以下操作:
CaseTypeComboBox.SelectedValue = origCaseType;
有没有人对此有任何想法?有没有类似的经历?
如果有任何需要澄清的地方,请告诉我,我们将不胜感激。
提前致谢!
TS
“Form2”构造器:
public ModifyCase(Client client)
{
InitializeComponent();
CaseNumberTextBox.Text = client.CaseNumber;
LoadStatusComboBox(client.Status);
LoadIsClosedRadioButton(client.IsClosed);
LoadIsInStorageRadioButton(client.IsInStorage);
LastModifiedTextBox.Text = client.LastModified.ToString();
NotesTextBox.Text = client.Notes;
origCaseType = client.CaseType;
}
“Form2”加载事件:
private void ModifyCase_Load(object sender, EventArgs e)
{
//Fills the ComboBox box with case types
this.case_typesTableAdapter1.Fill(this.testDataSet1.case_types);
//Attempts to set value for client's case type from Form1
CaseTypeComboBox.SelectedValue = origCaseType;
//Just to help me see what these variables are holding to figure
//out the problem...
MessageBox.Show(origCaseType);
MessageBox.Show(CaseTypeComboBox.SelectedIndex.ToString());
}
最佳答案
我做了两个小调整,成功了!问题是我已将 SelectedItem 和 SelectedValue 设置为我正在使用的 DataSource 列。除此之外,所需要的只是将这两个值设置为“无”,并将 ValueMember 和 DisplayMember 设置为 DataSource 列。感谢您的宝贵时间 wdavo!
关于c# - 在运行时修改 Databound ComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9302160/