Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用行中的分隔符自动完成文本框_C#_Winforms - Fatal编程技术网

C# 使用行中的分隔符自动完成文本框

C# 使用行中的分隔符自动完成文本框,c#,winforms,C#,Winforms,如何在自动完成和下拉菜单处于活动状态的情况下,使用行中具有不同字符的文本框 在文本框中,我输入第一个不同的字符,我有自动完成和下拉菜单,我的意思是它们都是活动的。 但是,只要我想在我的文本框中添加另一个独特的字符,我的自动完成和下拉菜单都不会激活。我的意思是他们没有表现出来。就在第一场表演中。 使用哪种代码,我可以使自动完成和下拉激活后的每个阶段的独特字符 我使用平台赢单。如果需要选择多个月,则可以使用多选列表框。列表框将包含月份列表,用户可以通过按住Ctrl键并单击来选择多个月份。但是,多个选

如何在自动完成和下拉菜单处于活动状态的情况下,使用行中具有不同字符的文本框

在文本框中,我输入第一个不同的字符,我有自动完成和下拉菜单,我的意思是它们都是活动的。 但是,只要我想在我的文本框中添加另一个独特的字符,我的自动完成和下拉菜单都不会激活。我的意思是他们没有表现出来。就在第一场表演中。 使用哪种代码,我可以使自动完成和下拉激活后的每个阶段的独特字符


我使用平台赢单。

如果需要选择多个月,则可以使用多选列表框。列表框将包含月份列表,用户可以通过按住Ctrl键并单击来选择多个月份。但是,多个选择列表框并不被认为是一种良好的用户体验,因为用户可能很难使用它

如果选择顺序很重要,可以使用mj82描述的方法。在这种情况下,列表框应处于单选模式。用户在列表框中选择一个月,然后单击“添加”按钮将该月添加到文本框中

但在后一种情况下,我建议使用两个列表框。左边的是完整的月份列表,用户将所选月份从左边的列表移动到右边的列表。如果所选月份的顺序很重要,则还应添加上移和下移按钮,以便用户可以更改所选列表中的顺序

您的对话框可能与此类似:

对于一个非常简单的示例,如果没有复杂的逻辑,请在表单上拖动2x listbox+2x按钮。然后附上以下代码。如您所见,有一种简单的方法可以将一个选定项从一个列表框移动到另一个列表框。它连接到按钮的点击和列表框双击事件

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        listBox1.Items.AddRange(new string[] { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" });

    }

    //ADD button
    private void button1_Click(object sender, EventArgs e)
    {
        MoveItem(listBox1, listBox2);
    }

    private void listBox1_DoubleClick(object sender, EventArgs e)
    {
        MoveItem(listBox1, listBox2);
    }


    //REMOVE button
    private void button2_Click(object sender, EventArgs e)
    {
        MoveItem(listBox2, listBox1);
    }

    private void listBox2_DoubleClick(object sender, EventArgs e)
    {
        MoveItem(listBox2, listBox1);
    }

    /// <summary>
    /// Moves item from one listbox to another
    /// </summary>
    /// <param name="listBoxFrom">Origin listbox</param>
    /// <param name="listBoxTo">Destination listbox</param>
    private void MoveItem(ListBox listBoxFrom, ListBox listBoxTo)
    {
        if (listBoxFrom.SelectedItems.Count == 1)
        {
            listBoxTo.Items.Add(listBoxFrom.SelectedItem);
            listBoxFrom.Items.Remove(listBoxFrom.SelectedItem);
        }
    }
} 

对不起,我不明白你在问什么。也许如果你发布了到目前为止你所拥有的代码,以及一些你所拥有的与你想要的对比的例子,我们可能会提供帮助。谢谢。例如,请参见下面的代码:var source=new AutoCompleteStringCollection();AddRange(新字符串[]{“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”});myTextBox.AutoCompleteSource=AutoCompleteSource.CustomSource;myTextBox.AutoCompleteCustomSource=source;myTextBox.AutoCompleteMode=AutoCompleteMode.SuggestAppend;。但我不知道如何在我的文本框-->八月;十二月,;也许我相信你不能用这种简单的方法——使用自动完成功能,你只能为整个文本框选择一个选项。在选择完成后,您可以考虑创建自己的USER控件或尝试重建源列表:在选择1'之后,如果选择8月份,则将列表重置为:“8月-一月”;“八月至二月”;“八月-三月”。。。等。没有测试,不完全是你需要的,但应该接近这一点。我的建议是:如果你真的需要它,请考虑使用不同的方法,例如,在结果中添加“结束+”添加“按钮的组合框或带有月名的列表框。@mj82这种方法看起来更好。
System.Text.StringBuilder sb = new StringBuilder();
foreach (object obj in listBox2.Items)
   sb.Append(obj).Append(";");

MessageBox.Show("Your selection is: " + sb.ToString());