Я использую, System.Windows.Forms
но, как ни странно, не имею возможности их создавать.
Как я могу получить что-то вроде диалогового окна с приглашением javascript без javascript?
MessageBox - это хорошо, но пользователь не может вводить данные.
Я хочу, чтобы пользователь вводил любой возможный текст.
Ответы:
Вам нужно создать свой собственный диалог подсказки. Возможно, вы могли бы создать для этого класс.
И называя это:
Обновление :
Добавлена кнопка по умолчанию ( клавиша ввода ) и начальный фокус на основе комментариев и другого вопроса .
источник
Добавьте ссылку
Microsoft.VisualBasic
и используйте ее в своем коде C #:Чтобы добавить ссылку: щелкните правой кнопкой мыши ссылки в окне обозревателя проектов, затем выберите Добавить ссылку и выберите VisualBasic из этого списка.
источник
Interaction
что не существует в пространстве именMicrosoft.VisualBasic
В Windows Forms такого нет.
Для этого вам необходимо создать свою собственную форму или:
использовать
Microsoft.VisualBasic
ссылку.Inputbox - это устаревший код, перенесенный в .Net для совместимости с VB6, поэтому я советую этого не делать.
источник
Microsoft.VisualBasic.Compatibility
пространства имен.Microsoft.VisualBasic
это скорее набор вспомогательных библиотек поверх .Net и вообще не специфичен для VB.Как правило, не рекомендуется импортировать библиотеки VisualBasic в программы C # (не потому, что они не работают, а только для совместимости, стиля и возможности обновления), но вы можете вызвать Microsoft.VisualBasic.Interaction.InputBox () для отображения нужного вам окна.
Если вы можете создать объект Windows.Forms, это будет лучше всего, но вы говорите, что не можете этого сделать.
источник
VisualBasic
, но это только в их голове. В этом чувстве нет реальности. Его также можно было бы назватьMicrosoft.MakeMyLifeEasierWithAlreadyImplementedMethods
пространством имен.Microsoft.VisualBasic.Compatibility
подпространство имен, а не все. ВMicrosoft.VisualBasic
пространство имен включено множество «основных» функций ; это никуда не денется. Microsoft пригрозила «закатом» VB 6, а не VB.NET. Они неоднократно обещали, что это никуда не денется. Некоторые люди, кажется, до сих пор не поняли разницу ...Другой способ сделать это: если у вас есть тип ввода TextBox, создать форму и значение текстового поля как общедоступное свойство.
В основной форме это будет код:
;
Таким образом код выглядит чище:
источник
Ответ Баса теоретически может вызвать у вас проблемы с памятью, поскольку ShowDialog не будет удален. Думаю, это более правильный способ. Также укажите, что textLabel читается с более длинным текстом.
Реализация:
источник
prompt
в этот момент значение null. Простое исправление, позволяющее отменить приглашение, - заменитьprompt.Dispose();
внутреннюю частьpublic void Dispose()
наif (prompt != null) { prompt.Dispose(); }
Основываясь на работе Баса Брекельмана, приведенной выше, я также создал две производные -> диалоговые окна «ввода», которые позволяют получать от пользователя как текстовое значение, так и логическое значение (TextBox и CheckBox):
... и текст вместе с выбором одного из нескольких вариантов (TextBox и ComboBox):
Оба требуют одинакового использования:
Назовите их так:
Назовите их так:
источник
Ответ Баса Брекельмана очень элегантен в своей простоте. Но я обнаружил, что для реального приложения требуется немного больше, например:
Класс здесь обрабатывает эти ограничения: http://www.codeproject.com/Articles/31315/Getting-User-Input-With-Dialogs-Part-1
Я только что загрузил исходный код и скопировал InputBox.cs в свой проект.
Удивлен, что нет ничего лучше ... Моя единственная реальная жалоба заключается в том, что текст заголовка не поддерживает в нем символы новой строки, поскольку он использует элемент управления меткой.
источник
К сожалению, C # до сих пор не предлагает эту возможность во встроенных библиотеках. Лучшее решение в настоящее время - создать собственный класс с методом, выводящим небольшую форму. Если вы работаете в Visual Studio, вы можете сделать это, нажав Проект> Добавить класс.
Элементы Visual C #> код> класс
Назовите класс PopUpBox (вы можете переименовать его позже, если хотите) и вставьте следующий код:
Вам нужно будет изменить пространство имен на то, что вы используете. Метод возвращает строку, поэтому вот пример того, как реализовать его в вызывающем методе:
Этот метод проверяет возвращаемую строку на наличие текстового значения, пустой строки или «отменить» (метод getUserInput возвращает «отменить», если нажата кнопка отмены) и действует соответственно. Если пользователь ничего не ввел и нажал «ОК», он сообщит пользователю и спросит, хотят ли они отменить или повторно ввести свой текст.
Примечания к публикациям: в моей собственной реализации я обнаружил, что во всех других ответах не хватало одного или нескольких из следующих пунктов:
Таким образом, я опубликовал собственное решение. Надеюсь, кому-то это пригодится. Благодарим Баса и Гидеона + комментаторов за ваш вклад, вы помогли мне найти работоспособное решение!
источник
вот моя отредактированная версия, которая принимает многострочный / одинарный вариант
источник
Вот пример на VB.NET
источник