ShakalX Ответов: 2

C# XML reader text to textbox не может быть скопирован.


try
                {
                Application.DoEvents();
                string uri = "https://pastebin.com/raw/ZYGRDhk0";
                XDocument document = XDocument.Load(uri);
                System.Xml.XmlTextReader reader = new XmlTextReader(uri);
                XmlNodeType type;
                Application.DoEvents();
                while (reader.Read())
                    {
                    type = reader.NodeType;

                    if (type == XmlNodeType.Element)
                        {
                       
                        if (reader.Name == "Code1")
                            {
                            reader.Read();
                            Application.DoEvents();
                            code1.Text = (reader.Value);

                            }
                        if (reader.Name == "Code2")
                            {
                            reader.Read();
                            Application.DoEvents();
                            code2.Text = (reader.Value);


                            }
                        if (reader.Name == "ImagemCode1")
                            {
                            reader.Read();
                            Application.DoEvents();
                            Imagecode1 = (reader.Value);
                            }


                       

                        }
                        }

                    

                reader.Close();
               
                }
            catch { }
            finally
                {
                if (code1.Text.Contains("Code"))
                    {
                    button13.Visible = false;

                    }
                }
            }


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

code1.Text = (reader.Value);

Проблема в том, что когда я копирую текст из текстового поля code1.Текст ничего не копировал. Нельзя копировать. Нужно ли мне делать чтение по-другому?
Это как если бы текст был в песочнице. Он тот, кого я копирую, но он не копирует.

2 Ответов

Рейтинг:
9

ShakalX

Решенный. Ошибка в строках разрыва xml дает ошибку на texbox.text.


Рейтинг:
2

Dave Kreskowiak

Если вы используете Application.DoEvents()- ты делаешь что-то очень неправильное.

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

Ваш блок catch также пуст, что означает, что любые исключения, которые этот код выбрасывает, будут проглочены, что значительно усложнит процесс отладки.

Ваш код выглядит запутанным, как будто вы создаете объект XDocument, но никогда не используете его.

Мы также понятия не имеем, как выглядит ваш XML-файл, если он вообще читается. избавьтесь от вещей Try/Catch и всего приложения.Делайте события и попробуйте еще раз.

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


ShakalX

Привет. Спасибо, что ответили. Я использую приложение.DoEvents (); потому что эта xml-нагрузка является Form1_Shown, поэтому она не приведет к сбою загрузки. Что происходит, так это то, что xml-данные, загруженные в textBox.text, не могут быть использованы. говорит, что текстовое поле пусто.

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

Dave Kreskowiak

Приложение.DoEvents ничего не предотвращает от сбоя. Все, что он делает, это обрабатывает ожидающие сообщения окна, такие как WM_PAINT, щелчки мыши, нажатия клавиш ... Если вы используете этот звонок вообще, вы делаете что-то очень неправильное.

Итак, что вы подразумеваете под "не разобьет груз"?

Загрузка XML - файла должна быть его собственным методом, специфичным для действия загрузки файла. Он не должен находиться в обработчике событий.

ShakalX

Ну, я использую для загрузки шоу формы, потому что это онлайн-файл, и я хочу, чтобы он загружался после загрузки. Проблема в том, что я не могу использовать данные, которые он загружает из xml в текстовое поле. Если мы скажем, что это была ссылка, и я использую систему.Диагностика.Процесс.Начало (Код1.текста), в том, что в Код1.Текст имеет www.google-это ошибка.Он говорит, что не может найти файл.Даже если он загрузился из xml в Но если я удалю текстовое поле и напишу www.google работает, так что я не понимаю, в чем проблема. Извините мой английский