Member 14130699 Ответов: 2

Привет, этот простой код не работает?


{
                 if (textBox1.Text == Clipboard.GetText())
                     MessageBox.Show("yes");
}


Поэтому, если текстовое поле имеет тот же текст, что и текст клипбордов, я хочу, чтобы messagebox сказал "Да". Но, похоже, это не работает. Почему? :)

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


Mehdi Gholam

Отладьте свой код и посмотрите, почему.

Gerry Schmitz

Подумайте об этом некоторое время, прежде чем бегать вполсилы. Покажите, что возвращает функция " GetText ()". Неужели тебе даже не любопытно?

F-ES Sitecore

Это не работает, потому что textBox1.Text не совсем соответствует буферу обмена.Gettext версии. Мы не знаем, что такое textBox1.Text и что такое буфер обмена.GetText заключается в том, что вам придется отлаживать свой код, чтобы увидеть, что представляют собой оба эти значения, найти разницу, и это даст вам ваш ответ.

RedDk

Я с интересом смотрю на стопку постов, которые вы накопили здесь, в CP, за последние несколько промежутков времени, и вижу, что вы действительно зацепились за эту идею программирования. Это случилось со мной очень давно. Девятнадцать-девяносто пять, если быть точным.

Что я сделал, так это пошел в => https://code.msdn.microsoft.com/... вы можете очистить пшеницу от плевел на панели treeview слева простым тиком. Использование более сдержанных терминов приводит к окончательному более узкому возврату.

Часто образцы-это именно то, что нужно разработчику/прогр. Если не совсем, то по крайней мере на том языке, на котором он/она хочет обратиться. Методы и все такое.

2 Ответов

Рейтинг:
2

OriginalGriff

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

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Быстрый Google для "Visual Studio debugger" должен дать вам информацию, необходимую для выполнения следующих действий:

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

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

string fromTextBox = textBox1.Text;
string fromClipboard = Clipboard.GetText();
if (fromTextBox == fromClipboard)
    {
    MessageBox.Show("yes");
    }
Теперь, если вы поставите точку останова на if линия, вы сможете точно увидеть, что вы сравниваете, наведя курсор мыши на имена переменных.

Извините, но мы не можем этого сделать для вас - пришло время освоить новый (и очень, очень полезный) навык: отладку!


GenJerDan

К черту точку останова; поставьте еще (временно) и покажите, что на самом деле находится в текстовом поле. (Тем временем обрежьте как текстовое поле, так и текст буфера обмена и сделайте Топпер или Толовер на них обоих (или иным образом снимите чувствительность к регистру сравнения)) ;)

OriginalGriff

Да, вы могли бы - но отладчик VS настолько чертовски полезен, что стоит дать им "дополнительные усилия" в течение нескольких минут, чтобы они начали регулярно его использовать. Мы оба знаем, сколько времени и почесывания головы это может сэкономить вам! :смеяться:

Рейтинг:
1

Patrice T

Цитата:
Поэтому, если текстовое поле имеет тот же текст, что и текст клипбордов, я хочу, чтобы messagebox сказал "Да". Но, похоже, это не работает. Почему? :)

Самый очевидный ответ - оба они не одинаковы!
Во-первых, убедитесь, что тест выполнен:
{
                 if (textBox1.Text == Clipboard.GetText())
                     MessageBox.Show("yes");
                 MessageBox.Show("Test executed");
}

затем, как показано в S1, используйте промежуточные переменные, это позволит вам увидеть их содержимое с помощью отладчика.

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

Отладка кода C# в Visual Studio - YouTube[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.