组合框不会显示正确的项目
本文关键字:项目 显示 组合 | 更新日期: 2023-09-27 18:31:48
我使用了一个组合框,其中包含来自MySql的表格中的项目,效果很好。我可以选择一个项目并保存一个对象,并显示所选对象。但是,如果用户想要编辑内容,我无法让组合框在编辑窗口中显示所选项目。文本框工作正常,但组合框显示列表中的第一个,而不是所选项目。我的构造函数:
public CreateForm(Letter brev)
{
InitializeComponent();
this.brev = brev;
GetDropDownBoxReady();
saveButton.Visible = false;
deleteButton.Visible = false;
insertText(brev);
}
private void GetDropDownBoxReady()
{
fraByCB.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown;
fraByCB.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
fraByCB.AutoCompleteSource = AutoCompleteSource.ListItems;
fraOmraadeCB.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown;
fraOmraadeCB.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
fraOmraadeCB.AutoCompleteSource = AutoCompleteSource.ListItems;
}
public void insertText(Letter brev)
{
// these work fine
objekt1textBox.Text = brev.Object1;
objekt2TextBox.Text = brev.Object2;
diverse2TextBox.Text = brev.Diverse2;
portoTakstTextBox.Text = brev.PortoTakst;
portoTillægTextBox.Text = brev.PortoTillaeg;
portoFraTextBox.Text = brev.PortoFra.ToString("dd-MM-yyyy");
portoTilTextBox.Text = brev.PortoTil.ToString("dd-MM-yyyy");
// these don't
fraByCB.SelectedText = brev.FraBy;
fraOmraadeCB.SelectedItem = fraOmraadeCB.FindStringExact(brev.FraOmraade);
}
如果您还需要更多代码,请告诉我找到问题所在。
您说您可以在组合框下拉列表中看到项目,但上面没有显示填充下拉列表的代码。然后,您可能使用预定义的字符串(使用 WinForms 设计器)在初始化组件调用中使用字符串填充组合框的 Items 属性。
此时,错误出在 insertText 方法中:
fraByCB.SelectedIndex = fraByCB.FindStringExact(brev.FraBy);
fraOmraadeCB.SelectedIndex = fraOmraadeCB.FindStringExact(brev.FraOmraade);
FindStringExact 返回搜索项的位置(如果找到),可以使用此值设置组合的 SelectedIndex 属性
因此,您的实际代码包含两个错误。第一个是关于fraByCB.SelectedText的。此方法用于获取/设置组合的部分或全部文本部分的突出显示,而不是选择 intem。第二个错误是将 FindStringExact 的返回值(整数)分配给需要字符串的 SelectedItem 属性