Member 12711085 Ответов: 1

Я думаю, что у моего кода есть проблема


Я запустил свой код, а потом он показал много форм в windows, не знаю почему. У меня уже есть общий код и картинка ниже
Спасибо за помощь

Что я уже пробовал:

Это мой код
public class Mean
        {
            static public string nghia;

        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            string a = null, text = null;
            a = Clipboard.GetText();
            text = a.ToLower();
            for (int i = 0; i < cbbtu.Items.Count; i++)
            {
                if (cbbtu.Items[i].ToString() == text)
                {
                    cbbtu.SelectedIndex = i;
                    Form clipbr = new clp();
                    clipbr.Show();
                }
            }
        }

Это проблема
abc. png - Google Диск[^]

F-ES Sitecore

Вы показываете форму в цикле, так что вы получите одну форму на cbbtu.Предметы.Считайте до тех пор, пока условие" если " истинно. Если вы этого не понимаете, то вам нужно вернуться назад и изучить c# с самых основ, чтобы понять, что он делает.

Midi_Mick

Кроме того, каждый раз, когда ваш таймер срабатывает, он создает новую форму для того, что уже было сделано. Либо вам нужно остановить таймер после обработки буфера обмена, либо вам нужно следить за тем, какие фрагменты текста уже имели форму, созданную для них, и не делать этого снова.

1 Ответов

Рейтинг:
1

OriginalGriff

Если вы хотите показать каждую форму одну за другой, то используйте ShowDialog вместо Show для ее отображения - код затем "остановится" и дождется закрытия новой формы, прежде чем продолжить цикл.

Но каждая форма, которую вы создаете, будет показывать одно и то же - вам, вероятно, нужно добавить свойство или конструктор в форму clp, чтобы отправить ей данные для отображения.