Combobox不会显示正确的项目

时间:2014-11-23 18:31:28

标签: c# mysql combobox

我使用了一个组合框,其中包含来自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);
   }

如果您需要更多代码,请告诉我也找不到问题。

1 个答案:

答案 0 :(得分:0)

你说你可以看到组合框下拉列表中的项目,但上面没有填写下拉列表的代码。然后,您可能使用预定义的字符串(使用WinForms设计器)在InitializeComponent调用中使用字符串填充组合框的Items属性。

此时错误发生在insertText方法中:

 fraByCB.SelectedIndex = fraByCB.FindStringExact(brev.FraBy);
 fraOmraadeCB.SelectedIndex = fraOmraadeCB.FindStringExact(brev.FraOmraade);

FindStringExact返回搜索到的项目的位置(如果找到),您可以使用此值来设置组合的SelectedIndex属性

所以你的实际代码包含两个错误。第一个是fraByCB.SelectedText。此方法用于获取/设置组合的部分或全部文本部分的突出显示,而不是选择内容。第二个错误是将FindStringExact(一个整数)的返回值赋予需要字符串的SelectedItem属性