Можно ли добавить элементы управления в C# MessageBox?
Можно ли добавить некоторые пользовательские элементы управления в стандартное окно сообщения для чтения входного значения, например текстовые поля для имени пользователя и пароля,или мне следует создать пользовательскую winform с кнопками "Ok, Отмена" и текстовыми полями?
Related: какой элемент управления использовать для быстрого ввода текста (inputbox)?
4 ответа:
Создайте свой собственный.
Создание пользовательского модального (или иного) диалогового окна ввода не так уж сложно, и вы можете создать расширяемость, необходимую для повторного использования.
public class ValueHolder { public string SomeInput { get; set; } public DialogResult Result { get; set; } } public class GimmeValues : Form { //... HAS A TEXTBOX and Okay Buttons... private GimmeValues() { okButton.DialogResult = DialogResult.OK; cancelButton.DialogResult = DialogResult.Cancel; // ... other stuff } public static ValueHolder GetInput(IWin32Window owner) { using (GimmeValues values = new GimmeValues()) { DialogResult result = values.ShowDialog(owner); return new ValueHolder { SomeInput = values.Textbox1.Text, Result = result }; } } }
Ладно я только что написал, что все в этом редакторе так что простите любые синтаксические ошибки.
Вы можете сделать что-то вроде вышеприведенного, но немного очистить его, добавить необходимую вам расширяемость (с точки зрения кнопок и входов, показывающих, что вам нужно и т. д.)... тогда просто назовите егоValueHolder value = GimmeValues.GetInput(this);
, гдеthis
будет представлять собойIWin32Window
...Результирующее значение
value
будет выбранным нонсенсом, и вы сможете выполнить свою логику..if(value.Result == DialogResult.OK && !string.IsNullOrEmpty(value.SomeInput)){ //TODO: Place logic.... }
Вы можете использовать
Interaction.InputBox
метод, который находится в Microsoft.VisualBasic пространство именПопробуйте это
Microsoft.VisualBasic.Interaction.InputBox("Enter a Value Here", "Title", "Your Default Text",200,100);
Для этого вам потребуется создать пользовательскую WinForm. Вы можете заставить его работать так же, как MessageBox, возвращая DialogResult в методе Show.
Вам придется создать пользовательскую форму, чтобы справиться с этим.
Если вы хотите, чтобы форма вела себя как MessageBox, просто создайте статический метод Show() в форме, который создает экземпляр и показывает поле пользователю. Этот статический метод также может обрабатывать возврат интересующих вас значений из пользовательской формы (например, DialogResult).