在运行时修改数据绑定组合框

本文关键字:组合 数据绑定 修改 运行时 | 更新日期: 2023-09-27 18:24:40

应用程序的高级视图是:

  • Form1在DataGridView中显示客户端信息(从数据库中提取)
  • 我将DataGridView中的客户端信息保存在客户端类中的属性中
  • 从Form1,用户可以单击一个按钮来实例化Form2,并允许修改客户端的信息
  • Form2的构造函数有一个Client对象作为参数。这个对象保存Form1中的所有客户端信息。使用这个对象,我可以重新填充我希望用户能够在Form2上编辑的字段

DataSource中有一个表,其中包含所有案例类型(即CaseType1、CaseType2、CaseType3)。

然后,当表单实例化时,我使用ComboBox并用DataSource中的所有事例类型填充它。我的组合框设置如下:

DataSource:设置为我的CaseTypeBindingSource,它有我需要的列和数据。DisplayMember:正在使用的查询的结果。ValueMember:正在使用的查询的结果。(与DisplayMember相同)SelectedValue:我用"none"和DisplayMember和ValueMember的值尝试过。

问题是:

在运行时,我希望能够将从Form1带来的客户端的案例类型分配为当前在组合框中选择的项目(SelectedItem)。

我可以将案例类型分配给一个文本框并完成它。但我的想法是,我希望表单向用户显示客户的案例类型,并允许他/她使用组合框更改它。

组合框名称为CaseTypeComboBox。保存案例类型信息及其属性的对象是客户端。案例类型。

我在构造函数中尝试了以下操作:

CaseTypeComboBox.SelectedItem = client.CaseType;

我还尝试在Form2中创建一个名为origCaseType的类变量,分配客户端。构造函数中origCaseType类变量的CaseType值。然后在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列。除了,所需要的只是将这两个值设置为"none",并将ValueMember和DisplayMember设置为DataSource列。谢谢你抽出时间!