У меня есть примитивное приложение с 2 полями со списком. Они нормально работают после первого запуска приложения.

Screenshot1

Однако после ввода текста в строку поиска и нажатия клавиши ВВОД выпадающие списки зацикливают свое содержимое.

Screenshot2

Это происходит после того, как я ввожу текстовое поле, даже если я не нажимаю клавишу ввода. Каждый раз, когда я нажимаю клавишу, в comboBox добавляется еще один повторяющийся список параметров. Как мне предотвратить эту неисправность comboBox? Вот мой код.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//Nick Knapp
//CSCI 363 Fall 2019
namespace c363_hw3_2
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();



        }

        private void Form1_Load(object sender, EventArgs e)
        {

            this.Text = "Library Literature Search";
            this.BackColor = Color.White;

            comboBox2.Items.Add("All");
            comboBox2.Items.Add("Books");
            comboBox2.Items.Add("Papers");
            comboBox2.Items.Add("Films");
            comboBox2.Items.Add("CDs");
            comboBox2.Items.Add("Other");
            comboBox2.SelectedIndex = 0;


            comboBox1.Items.Add("Title");
            comboBox1.Items.Add("Author");
            comboBox1.Items.Add("Publisher");
            comboBox1.Items.Add("ISBN");
            comboBox1.SelectedIndex = 0;

            // this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckEnter);
            //this.Controls.Add(textBox1);
            this.ActiveControl = textBox1;
            textBox1.KeyPress += new KeyPressEventHandler(keypressed);

        }
        private void keypressed(Object o, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Return)
            {
                textBox1.Text = "";
                e.Handled = true;
            }
        }


        private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}
0
Nick Knapp 25 Ноя 2019 в 06:40
1
Покажи нам свой код
 – 
vasily.sib
25 Ноя 2019 в 06:44
Опубликованный вами код не показывает, где элементы были добавлены в ComboBox при нажатии клавиши.
 – 
preciousbetine
25 Ноя 2019 в 06:57
Я переместил все операторы добавления comboBox в общедоступную функцию Form1 (), и теперь, похоже, все работает.
 – 
Nick Knapp
25 Ноя 2019 в 07:07

2 ответа

Я думаю, что ваш код правильный, но пробовали ли вы когда-нибудь эти 2 метода после вызова полей со списком?

comboBox1.ResetText();
comboBox1.Items.Clear();```

i think it works


0
Hooman Salimi 25 Ноя 2019 в 11:13
private void keypressed(Object o, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.Return)
        {
            textBox1.Text = "";
            comboBox1.Items.Clear();
            e.Handled = true;
        }
    }
0
Umair Rasheed 30 Ноя 2019 в 15:44