Есть ли в C # какая-либо функция, которая вводит строку с формой? - PullRequest
4 голосов
/ 12 мая 2011

Я хочу написать простое приложение, которое вводит несколько строк и что-то с ними делает.

Я ищу функцию, похожую на Delphi's InputBox или InputQuery, которая читает строку из предопределенногоформа.Это похоже на MessageBox, который очень полезен, чтобы избежать создания формы вручную.

Например:

p1 := InputBox('Type the parameter', 'Parameter 1');
...

Но я не нашел ни одной функции.Кто-нибудь может знать об этом?

Спасибо: дд

Ответы [ 6 ]

8 голосов
/ 12 мая 2011

Вы можете использовать InputBox из пространства имен VisualBasic :

var str1 = Microsoft.VisualBasic.Interaction.InputBox("Name:", "", "", 100, 100);

То, что оно находится в пространстве имен VisualBasic, не означает, что оно плохое!

7 голосов
/ 12 мая 2011
using System.Windows.Forms;
using System.Drawing;

public static DialogResult InputBox(string title, string promptText, ref string value)
{
  Form form = new Form();
  Label label = new Label();
  TextBox textBox = new TextBox();
  Button buttonOk = new Button();
  Button buttonCancel = new Button();

  form.Text = title;
  label.Text = promptText;
  textBox.Text = value;

  buttonOk.Text = "OK";
  buttonCancel.Text = "Cancel";
  buttonOk.DialogResult = DialogResult.OK;
  buttonCancel.DialogResult = DialogResult.Cancel;

  label.SetBounds(9, 20, 372, 13);
  textBox.SetBounds(12, 36, 372, 20);
  buttonOk.SetBounds(228, 72, 75, 23);
  buttonCancel.SetBounds(309, 72, 75, 23);

  label.AutoSize = true;
  textBox.Anchor = textBox.Anchor | AnchorStyles.Right;
  buttonOk.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
  buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;

  form.ClientSize = new Size(396, 107);
  form.Controls.AddRange(new Control[] { label, textBox, buttonOk, buttonCancel });
  form.ClientSize = new Size(Math.Max(300, label.Right + 10), form.ClientSize.Height);
  form.FormBorderStyle = FormBorderStyle.FixedDialog;
  form.StartPosition = FormStartPosition.CenterScreen;
  form.MinimizeBox = false;
  form.MaximizeBox = false;
  form.AcceptButton = buttonOk;
  form.CancelButton = buttonCancel;

  DialogResult dialogResult = form.ShowDialog();
  value = textBox.Text;
  return dialogResult;
}

взято из: http://www.csharp -examples.net / inputbox /

0 голосов
/ 12 мая 2011

.NET, следовательно, C #, не имеет встроенной формы ввода, такой как InputBox в Delphi или Диалоговое окно ввода с помощью метода showInputDialog в Java.

UPD.Забыл про сборку Visual Basic, с которой это возможно.

0 голосов
/ 12 мая 2011

Посмотрите на этот пост .Я думаю, что это полезно для вас.

0 голосов
/ 12 мая 2011

Вы можете написать свое собственное окно с полем ввода ИЛИ использовать пространство имен Microsoft.VisualBasic из сборки Microsoft Visual Basic .NET Runtime.

Может быть:

string result = Interaction.InputBox("Param1","Param2" ...);
0 голосов
/ 12 мая 2011

Попробуйте это: Форумы MSDN - где находится простая диалоговая подсказка (похожая на MessageBox)?

Цитировать принятый ответ:

Естьничего такого ... Если вы не используете Visual Basic или специально не добавили ссылку на сборку Microsoft.VisualBasic.

После добавления ссылки на Microsoft.VisualBasic вы можете использовать код, подобный следующему:

string s = Microsoft.VisualBasic.Interaction.InputBox("Enter string:", "Data Entry", "", -1, -1); 

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

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