Qual é a versão C # do InputDialog do VB.net?

Qual é a versão C # do InputDialog do VB.net?

Adicione uma referência a Microsoft.VisualBasic , InputBox está no namespace Microsoft.VisualBasic.Interaction :

 string input = Microsoft.VisualBasic.Interaction.InputBox("Prompt", "Title", "Default", -1, -1); 

Resumindo:

  • Não há nenhum em c # .
  • Você pode usar o diálogo do Visual Basic, adicionando uma referência ao Microsoft.VisualBasic:

    1. No Solution Explorer , clique com o botão direito do mouse na pasta References .
    2. Selecione Adicionar referência …
    3. Na guia .NET (em versões mais recentes do Visual Studio – guia Assembly ) – selecione Microsoft.VisualBasic
    4. Clique em OK

Então você pode usar o código mencionado anteriormente:

 string input = Microsoft.VisualBasic.Interaction.InputBox("Title", "Prompt", "Default", 0, 0); 
  • Escreva seu próprio InputBox.
  • Use outra pessoa .

Dito isso, sugiro que você considere a necessidade de uma checkbox de input em primeiro lugar. Diálogos nem sempre são a melhor maneira de fazer as coisas e às vezes fazem mais mal do que bem – mas isso depende da situação particular.

Criação dinâmica de uma checkbox de diálogo. Você pode personalizar ao seu gosto.

Note que não há dependência externa aqui, exceto o winform

 private static DialogResult ShowInputDialog(ref string input) { System.Drawing.Size size = new System.Drawing.Size(200, 70); Form inputBox = new Form(); inputBox.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; inputBox.ClientSize = size; inputBox.Text = "Name"; System.Windows.Forms.TextBox textBox = new TextBox(); textBox.Size = new System.Drawing.Size(size.Width - 10, 23); textBox.Location = new System.Drawing.Point(5, 5); textBox.Text = input; inputBox.Controls.Add(textBox); Button okButton = new Button(); okButton.DialogResult = System.Windows.Forms.DialogResult.OK; okButton.Name = "okButton"; okButton.Size = new System.Drawing.Size(75, 23); okButton.Text = "&OK"; okButton.Location = new System.Drawing.Point(size.Width - 80 - 80, 39); inputBox.Controls.Add(okButton); Button cancelButton = new Button(); cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; cancelButton.Name = "cancelButton"; cancelButton.Size = new System.Drawing.Size(75, 23); cancelButton.Text = "&Cancel"; cancelButton.Location = new System.Drawing.Point(size.Width - 80, 39); inputBox.Controls.Add(cancelButton); inputBox.AcceptButton = okButton; inputBox.CancelButton = cancelButton; DialogResult result = inputBox.ShowDialog(); input = textBox.Text; return result; } 

uso

 string input="hede"; ShowInputDialog(ref input); 

Não há um. Se você realmente queria usar o VB InputBox em C # você pode. Basta adicionar uma referência ao Microsoft.VisualBasic.dll e você o encontrará lá.

Mas eu sugiro não usá-lo. É feio e desatualizado IMO.

Não apenas você deve adicionar Microsoft.VisualBasic à sua lista de referência para o projeto, mas também deve declarar ‘using Microsoft.VisualBasic;’ então você só tem que usar ‘Interaction.Inputbox (“…”)’ em vez de Microsoft.VisualBasic.Interaction.Inputbox

Retorna a string que o usuário digitou; seqüência vazia se eles baterem Cancelar :

  public static String InputBox(String caption, String prompt, String defaultText) { String localInputText = defaultText; if (InputQuery(caption, prompt, ref localInputText)) { return localInputText; } else { return ""; } } 

Retorna o String como um parâmetro ref , retornando true se eles acertarem OK , ou false se eles clicarem em Cancel :

  public static Boolean InputQuery(String caption, String prompt, ref String value) { Form form; form = new Form(); form.AutoScaleMode = AutoScaleMode.Font; form.Font = SystemFonts.IconTitleFont; SizeF dialogUnits; dialogUnits = form.AutoScaleDimensions; form.FormBorderStyle = FormBorderStyle.FixedDialog; form.MinimizeBox = false; form.MaximizeBox = false; form.Text = caption; form.ClientSize = new Size( Toolkit.MulDiv(180, dialogUnits.Width, 4), Toolkit.MulDiv(63, dialogUnits.Height, 8)); form.StartPosition = FormStartPosition.CenterScreen; System.Windows.Forms.Label lblPrompt; lblPrompt = new System.Windows.Forms.Label(); lblPrompt.Parent = form; lblPrompt.AutoSize = true; lblPrompt.Left = Toolkit.MulDiv(8, dialogUnits.Width, 4); lblPrompt.Top = Toolkit.MulDiv(8, dialogUnits.Height, 8); lblPrompt.Text = prompt; System.Windows.Forms.TextBox edInput; edInput = new System.Windows.Forms.TextBox(); edInput.Parent = form; edInput.Left = lblPrompt.Left; edInput.Top = Toolkit.MulDiv(19, dialogUnits.Height, 8); edInput.Width = Toolkit.MulDiv(164, dialogUnits.Width, 4); edInput.Text = value; edInput.SelectAll(); int buttonTop = Toolkit.MulDiv(41, dialogUnits.Height, 8); //Command buttons should be 50x14 dlus Size buttonSize = Toolkit.ScaleSize(new Size(50, 14), dialogUnits.Width / 4, dialogUnits.Height / 8); System.Windows.Forms.Button bbOk = new System.Windows.Forms.Button(); bbOk.Parent = form; bbOk.Text = "OK"; bbOk.DialogResult = DialogResult.OK; form.AcceptButton = bbOk; bbOk.Location = new Point(Toolkit.MulDiv(38, dialogUnits.Width, 4), buttonTop); bbOk.Size = buttonSize; System.Windows.Forms.Button bbCancel = new System.Windows.Forms.Button(); bbCancel.Parent = form; bbCancel.Text = "Cancel"; bbCancel.DialogResult = DialogResult.Cancel; form.CancelButton = bbCancel; bbCancel.Location = new Point(Toolkit.MulDiv(92, dialogUnits.Width, 4), buttonTop); bbCancel.Size = buttonSize; if (form.ShowDialog() == DialogResult.OK) { value = edInput.Text; return true; } else { return false; } } ///  /// Multiplies two 32-bit values and then divides the 64-bit result by a /// third 32-bit value. The final result is rounded to the nearest integer. ///  public static int MulDiv(int nNumber, int nNumerator, int nDenominator) { return (int)Math.Round((float)nNumber * nNumerator / nDenominator); } 

Nota : Qualquer código é liberado para o domínio público. Nenhuma atribuição é necessária.

Adicione referência ao Microsoft.VisualBasic e use esta function:

 string response = Microsoft.VisualBasic.Interaction.InputBox("What's 1+1?", "Title", "2", 0, 0); 

O último número 2 é uma posição X / Y para exibir o diálogo de input.

Você quer dizer InputBox? Basta olhar no namespace Microsoft.VisualBasic.

C # e VB.Net compartilham uma biblioteca comum. Se um idioma pode usá-lo, o mesmo pode acontecer com o outro.

Você pode usar o seguinte Modelo de Diálogo de Entrada de Amostra encontrado aqui: link text

Sem adicionar uma referência ao Microsoft.VisualBasic:

 // "dynamic" requires reference to Microsoft.CSharp Type tScriptControl = Type.GetTypeFromProgID("ScriptControl"); dynamic oSC = Activator.CreateInstance(tScriptControl); oSC.Language = "VBScript"; string sFunc = @"Function InBox(prompt, title, default) InBox = InputBox(prompt, title, default) End Function "; oSC.AddCode(sFunc); dynamic Ret = oSC.Run("InBox", "メッセージ", "タイトル", "初期値"); 

Veja estes para mais informações:
ScriptControl
MsgBox no JScript
Entrada e MsgBox no JScript

.NET 2.0:

 string sFunc = @"Function InBox(prompt, title, default) InBox = InputBox(prompt, title, default) End Function "; Type tScriptControl = Type.GetTypeFromProgID("ScriptControl"); object oSC = Activator.CreateInstance(tScriptControl); // https://github.com/mono/mono/blob/master/mcs/class/corlib/System/MonoType.cs // System.Reflection.PropertyInfo pi = tScriptControl.GetProperty("Language", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.CreateInstance| System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.IgnoreCase); // pi.SetValue(oSC, "VBScript", null); tScriptControl.InvokeMember("Language", System.Reflection.BindingFlags.SetProperty, null, oSC, new object[] { "VBScript" }); tScriptControl.InvokeMember("AddCode", System.Reflection.BindingFlags.InvokeMethod, null, oSC, new object[] { sFunc }); object ret = tScriptControl.InvokeMember("Run", System.Reflection.BindingFlags.InvokeMethod, null, oSC, new object[] { "InBox", "メッセージ", "タイトル", "初期値" }); Console.WriteLine(ret); 

Consegui conseguir isso codificando o meu. Eu não gosto de estender e confiar em grandes bibliotecas para algo rudimentar.

Formulário e Designer:

 public partial class InputBox : Form { public String Input { get { return textInput.Text; } } public InputBox() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { DialogResult = System.Windows.Forms.DialogResult.OK; } private void button1_Click(object sender, EventArgs e) { DialogResult = System.Windows.Forms.DialogResult.Cancel; } private void InputBox_Load(object sender, EventArgs e) { this.ActiveControl = textInput; } public static DialogResult Show(String title, String message, String inputTitle, out String inputValue) { InputBox inputBox = null; DialogResult results = DialogResult.None; using (inputBox = new InputBox() { Text = title }) { inputBox.labelMessage.Text = message; inputBox.splitContainer2.SplitterDistance = inputBox.labelMessage.Width; inputBox.labelInput.Text = inputTitle; inputBox.splitContainer1.SplitterDistance = inputBox.labelInput.Width; inputBox.Size = new Size( inputBox.Width, 8 + inputBox.labelMessage.Height + inputBox.splitContainer2.SplitterWidth + inputBox.splitContainer1.Height + 8 + inputBox.button2.Height + 12 + (50)); results = inputBox.ShowDialog(); inputValue = inputBox.Input; } return results; } void labelInput_TextChanged(object sender, System.EventArgs e) { } } partial class InputBox { ///  /// Required designer variable. ///  private System.ComponentModel.IContainer components = null; ///  /// Clean up any resources being used. ///  /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code ///  /// Required method for Designer support - do not modify /// the contents of this method with the code editor. ///  private void InitializeComponent() { this.labelMessage = new System.Windows.Forms.Label(); this.button1 = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button(); this.labelInput = new System.Windows.Forms.Label(); this.textInput = new System.Windows.Forms.TextBox(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.splitContainer2 = new System.Windows.Forms.SplitContainer(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); this.splitContainer2.Panel1.SuspendLayout(); this.splitContainer2.Panel2.SuspendLayout(); this.splitContainer2.SuspendLayout(); this.SuspendLayout(); // // labelMessage // this.labelMessage.AutoSize = true; this.labelMessage.Location = new System.Drawing.Point(3, 0); this.labelMessage.MaximumSize = new System.Drawing.Size(379, 0); this.labelMessage.Name = "labelMessage"; this.labelMessage.Size = new System.Drawing.Size(50, 13); this.labelMessage.TabIndex = 99; this.labelMessage.Text = "Message"; // // button1 // this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.button1.Location = new System.Drawing.Point(316, 126); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 3; this.button1.Text = "Cancel"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // // button2 // this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.button2.Location = new System.Drawing.Point(235, 126); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(75, 23); this.button2.TabIndex = 2; this.button2.Text = "OK"; this.button2.UseVisualStyleBackColor = true; this.button2.Click += new System.EventHandler(this.button2_Click); // // labelInput // this.labelInput.AutoSize = true; this.labelInput.Location = new System.Drawing.Point(3, 6); this.labelInput.Name = "labelInput"; this.labelInput.Size = new System.Drawing.Size(31, 13); this.labelInput.TabIndex = 99; this.labelInput.Text = "Input"; this.labelInput.TextChanged += new System.EventHandler(this.labelInput_TextChanged); // // textInput // this.textInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.textInput.Location = new System.Drawing.Point(3, 3); this.textInput.Name = "textInput"; this.textInput.Size = new System.Drawing.Size(243, 20); this.textInput.TabIndex = 1; // // splitContainer1 // this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; this.splitContainer1.IsSplitterFixed = true; this.splitContainer1.Location = new System.Drawing.Point(0, 0); this.splitContainer1.Name = "splitContainer1"; // // splitContainer1.Panel1 // this.splitContainer1.Panel1.Controls.Add(this.labelInput); // // splitContainer1.Panel2 // this.splitContainer1.Panel2.Controls.Add(this.textInput); this.splitContainer1.Size = new System.Drawing.Size(379, 50); this.splitContainer1.SplitterDistance = 126; this.splitContainer1.TabIndex = 99; // // splitContainer2 // this.splitContainer2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.splitContainer2.IsSplitterFixed = true; this.splitContainer2.Location = new System.Drawing.Point(12, 12); this.splitContainer2.Name = "splitContainer2"; this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal; // // splitContainer2.Panel1 // this.splitContainer2.Panel1.Controls.Add(this.labelMessage); // // splitContainer2.Panel2 // this.splitContainer2.Panel2.Controls.Add(this.splitContainer1); this.splitContainer2.Size = new System.Drawing.Size(379, 108); this.splitContainer2.SplitterDistance = 54; this.splitContainer2.TabIndex = 99; // // InputBox // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(403, 161); this.Controls.Add(this.splitContainer2); this.Controls.Add(this.button2); this.Controls.Add(this.button1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "InputBox"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Title"; this.TopMost = true; this.Load += new System.EventHandler(this.InputBox_Load); this.splitContainer1.Panel1.ResumeLayout(false); this.splitContainer1.Panel1.PerformLayout(); this.splitContainer1.Panel2.ResumeLayout(false); this.splitContainer1.Panel2.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); this.splitContainer1.ResumeLayout(false); this.splitContainer2.Panel1.ResumeLayout(false); this.splitContainer2.Panel1.PerformLayout(); this.splitContainer2.Panel2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); this.splitContainer2.ResumeLayout(false); this.ResumeLayout(false); } #endregion private System.Windows.Forms.Label labelMessage; private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button2; private System.Windows.Forms.Label labelInput; private System.Windows.Forms.TextBox textInput; private System.Windows.Forms.SplitContainer splitContainer1; private System.Windows.Forms.SplitContainer splitContainer2; } 

Uso:

 String output = ""; result = System.Windows.Forms.DialogResult.None; result = InputBox.Show( "Input Required", "Please enter the value (if available) below.", "Value", out output); if (result != System.Windows.Forms.DialogResult.OK) { return; } 

Observe que isso exibe um pouco de dimensionamento automático para mantê-lo bastante baseado na quantidade de texto solicitada. Eu também sei que está faltando os sinos e assobios, mas é um passo sólido para aqueles que enfrentam esse mesmo dilema.

Não existe tal coisa: recomendo escrevê-lo para si e usá-lo sempre que precisar.