繁体   English   中英

在 ComboBox 中选择项目后更改后文本框不更新(ComboBox 从文本文件中获取列表)

[英]Text box does not update after changing after selected item in ComboBox (ComboBox gets the list from a text file)

我在 WinForms 应用程序中遇到了 ComboBox 的问题。 组合框包含一个列表,其中包含从 TXT 文件中获取的项目。 为了阅读和更新列表,我将以下代码添加到 Form_Load。

string[] lineOfContents = File.ReadAllLines(Application.StartupPath + @"Items.txt");
        foreach(var line in lineOfContents)
        {
            string[] tokens = line.Split(',');
            ComboBox.Items.Add(tokens[0]);
        }

一切都很好,列表确实更新了。 但是,我也有一些文本框根据 ComboBox 中所选项目的字符串更改其文本。 例如,当 ComboBox 中的选中项为“示例”时,第一个文本框中的文本应由空变为“我是示例”。 但它没有并且仍然为空:它的代码是:

if(ComboBox.SelectedItem == "Example")
        {
            TextBox.Text = "I am an example!";
         }

起初我认为这是一个转换问题,所以我尝试使用Convert.ToString(tokens[0]); 但它也没有奏效。

关于我接下来应该尝试解决此问题的任何建议?

您正在描述绑定行为,因此首先要检查的是TextBox是否正确绑定到ComboBox 像这样的东西会起作用:

public MainForm()
{
    InitializeComponent();

    // Attach text box text to changes of combo box text
    textBox1.DataBindings.Add(
        nameof(textBox1.Text),
        comboBox1,
        nameof(comboBox1.Text)
    );
}

但是我在您的代码中注意到的另一件事是,在将令牌加载到组合框中后,您似乎没有select组合框中的值。 这将文本框留空,如下所示:

private void buttonLoad_Click(object sender, EventArgs e)
{
    loadMockFile();
}

private void loadMockFile()
{
    string[] lineOfContents = MockFile;
    foreach (var line in lineOfContents)
    {
        var token = 
            line.Split(',')
            .Select(_ => _.Trim())
            .Distinct()
            .First();
        if (!comboBox1.Items.Contains(token))
        {
            comboBox1.Items.Add(token);
        }
    }
}

string[] MockFile = new string []
{
    "Example, A, B,",
    "Other, C, D,",
};

需要选择


因此,解决方案是确保在将令牌加载到ComboBox后进行选择,例如 [Load + Select] 按钮的处理程序中所示:

private void buttonLoadPlusSelect_Click(object sender, EventArgs e)
{
    loadMockFile();
    var foundIndex = comboBox1.FindStringExact("Example");
    comboBox1.SelectedIndex = foundIndex;
}

加载后选择

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM