我使用了一个组合框,其中包含来自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);
}
如果您需要更多代码,请告诉我也找不到问题。
答案 0 :(得分:0)
你说你可以看到组合框下拉列表中的项目,但上面没有填写下拉列表的代码。然后,您可能使用预定义的字符串(使用WinForms设计器)在InitializeComponent调用中使用字符串填充组合框的Items属性。
此时错误发生在insertText方法中:
fraByCB.SelectedIndex = fraByCB.FindStringExact(brev.FraBy);
fraOmraadeCB.SelectedIndex = fraOmraadeCB.FindStringExact(brev.FraOmraade);
FindStringExact返回搜索到的项目的位置(如果找到),您可以使用此值来设置组合的SelectedIndex属性
所以你的实际代码包含两个错误。第一个是fraByCB.SelectedText。此方法用于获取/设置组合的部分或全部文本部分的突出显示,而不是选择内容。第二个错误是将FindStringExact(一个整数)的返回值赋予需要字符串的SelectedItem属性