保存文本框自动完成自定义源

本文关键字:自定义 文本 保存 | 更新日期: 2023-09-27 18:30:58

所以,我有以下内容....

        textBox1.Text = Properties.Settings.Default.NetworkIP;
        AutoCompleteStringCollection sc = Properties.Settings.Default.IPList;
        textBox1.AutoCompleteCustomSource = sc;

和。。

        private void textBox1_Click(object sender, EventArgs e)
    {
            if (!textBox1.AutoCompleteCustomSource.Contains(textBox1.Text))
                textBox1.AutoCompleteCustomSource.Add(textBox1.Text);
            textBox1.Text = textBox1.Text;
    }

和。。

    private void textBox1_Leave(object sender, EventArgs e)
    {
        AutoCompleteStringCollection sc = Properties.Settings.Default.IPList;
        sc.Add(textBox1.Text);
        Properties.Settings.Default.IPList = sc;
        Properties.Settings.Default.NetworkIP = textBox1.Text;
        Properties.Settings.Default.Save();
    }

网络IP的保存/恢复工作正常。保存和恢复IPList工作正常。小问题。编辑 textBox1 后按 Enter 或 TAB 键只会在突出显示 textBox1 的内容中,光标位于末尾。 我必须物理单击下一个字段才能将光标移动到上面。

注释掉这个允许 TAB 但不能输入正常工作,但当然我没有得到保存......

            AutoCompleteStringCollection sc = Properties.Settings.Default.IPList;
        sc.Add(textBox1.Text);
        Properties.Settings.Default.IPList = sc;

用户是什么,如何删除下拉列表中的条目?

感谢您的帮助。

伊恩

保存文本框自动完成自定义源

我有点困惑您是否有兴趣保存Textbox选择或AutoCompleteSource,假设您需要存储Specialized.StringCollection(IPList 或更新的 IPList),我有以下代码片段可能有助于解决您的情况。

AutoCompleteStringCollection source = textBox1.AutoCompleteCustomSource;
if (Properties.Settings.Default.IPLIST != null)
{
    Properties.Settings.Default.IPLIST.Clear();
    Properties.Settings.Default.IPLIST.AddRange(source.Cast<string>().ToArray());
    Properties.Settings.Default.Save();
}

此外,还可以通过将设置类型更改为 System.Windows.Forms.AutoCompleteStringCollection 来将自动完成条目存储为 AutoCompleteStringCollection

        AutoCompleteStringCollection sc = Properties.Settings.Default.autoComp
        textBox1.AutoCompleteCustomSource = sc;
        sc.Add("new option")//or whatever you want
        //set the setting
        Properties.Settings.Default.autoComp;
        //save it to file
        Properties.Settings.Default.Save();