C# Подождите, пока текст TextBox заполнится, прежде чем продолжить - PullRequest
0 голосов
/ 09 мая 2020

Моя программа вычисляет кучу вещей, отображает их в текстовом поле и продолжает. Я хочу сделать снимок экрана своей программы, чтобы убедиться, что она выполняет правильные вычисления и решения. Однако мой текст TextBox всегда отстает. Как это исправить?

textBox26.Text = "HELLO";
            String input = File.ReadAllText(@"C:\XXXXXXXXXXXXXX\LOG.txt");
            int imageid = Convert.ToInt32(input) + 1;
            Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
            using (Graphics g = Graphics.FromImage(bmp))
            {
                g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
                bmp.Save(@"C:\XXXXXXXXXXXXXX\" + imageid.ToString("D5") + ".png");  // saves the image
            }
            File.WriteAllText(@"C:\XXXXXXXXXXXXXX\LOG.txt", "" + imageid);

На моем снимке экрана отображается пустое текстовое поле. Пожалуйста, помогите

Ответы [ 2 ]

2 голосов
/ 09 мая 2020

Он отстает, потому что поток, который будет перерисовывать текстовое поле, занят запуском кода вашего приложения, и ваш код переходит прямо от установки текста к созданию снимка экрана, не давая потоку возможности покинуть ваш код и перерисовать поле. Перерисовка произойдет только тогда, когда ваш код будет завершен. Грубый и готовый способ добиться того, чего вы хотите, - это набрать Application.DoEvents() между установкой текста и съемкой.

2 голосов
/ 09 мая 2020

Я считаю, что после того, как вы установите текстовое свойство текстового поля, я бы назвал Application.DoEvents() гриппом sh сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...