C# - Usando o InputBox


Se você não sabia vai ficar sabendo agora...

A linguagem C# não possui nada perecido com o InputBox da linguagem Visual Basic.

Conhece o InputBox ?

Não !!!

O inputbox exibe um prompt em uma caixa de diálogo que aguarda que um texto seja informado ou um dos botões seja clicado e então retorna uma string contendo o conteúdo do TextBox.

A sintaxe da função é a seguinte:

Dim Prompt As String
Dim Titulo As String
Dim respostaPadrao As String
Dim XPos As Integer
Dim YPos As Integer
Dim valorRetornado As String

valorRetorando = InputBox(Prompt, Titulo, respostaPadrao, XPos, YPos)

Abaixo temos o código feito na linguagem VB .NET para mostrar como o InputBox funciona:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim Prompt As String = "Informe o nome "
Dim Titulo As String = "Procurar por nome"
Dim respostaPadrao As String = "Macoratti"
Dim XPos As Integer = 100
Dim
YPos As Integer = 300
Dim
valorRetornado As String

   valorRetornado = InputBox(Prompt, Titulo, respostaPadrao, XPos, YPos)
   MsgBox(
" O valor retornado foi :? " & valorRetornado)

End Sub

Este código mostra a seguinte janela InputBox:

Obs: Se o usuário clicar no botão Cancel uma string de comprimento zero será retornada

Tudo bem, que não é um controle cheio de recursos , mas em alguns casos é o mais simples de ser usado.

E como usar o inputbox na linguagem C# ?

A saída mais fácil é fazer uma referência no seu projeto a Microsoft.VisualBasic.

No menu Project selecione Add Reference e na guia .NET selecione Microsoft.VisualBasic e clique em OK;

e a seguir definir o namespace :  using Microsoft.VisualBasic;

Após isso basta usar o método Interaction.InputBox como no Visual Basic. Veja o exemplo abaixo:

private void button1_Click(object sender, EventArgs e)
{
   string valor = Interaction.InputBox("Informe o nome", "Procurar por nome", "Macoratti", 100, 200);
}

A seguir temos outro exemplo com validação da entrada pelo usuário:

Obs: Abaixo temos o código colocado no evento Click de um controle Button que irá exibir um prompt usando o inputbox

    private void button1_Click(object sender, EventArgs e)

        {

            /* usando a função VB.Net para exibir um prompt para o usuário informar a senha */

            string Prompt = "A senha é obrigatória.";

            string Titulo = "www.macoratti.net";

            string Resultado = Microsoft.VisualBasic.Interaction.InputBox(Prompt, Titulo, "*", 150, 150);

            /* defina senha apenas para testar. */

            string password = "mac";

            /* verifica se o resultado é uma string vazia o que indica que foi cancelado. */

            if (Resultado != "")

            {

                Resultado = Resultado.TrimStart();

                /* Verifica se a senha confere. */

                if (Resultado != password)

                {

                    MessageBox.Show("Senha Incorreta.");

                }

                else

                {

                    MessageBox.Show("Senha válida.");

                }

            }

        }

O resultado exibido será:

Mas se você não quiser usar esta solução por achar o cúmulo ter referenciar um namespace do Visual Basic no seu projeto C#, para usar uma função tão simples, pode você mesmo criar o seu InputBox.

A seguir vou dar um exemplo encontrado na web de como criar um inputbox para a linguagem C#.(existem muitas outras maneiras de fazer isso)

Apos criar o seu projeto no Visual Studio ou Visual C# 2010 Express Edition no menu Project selecione Add Class;

A seguir informe o nome do arquivo como InputBox.cs e inclua o seguinte código no arquivo que defina a classe InputBoxDialog que herda de Windows.Forms.

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

namespace System

{

/// <summary>

/// Summary description for InputBox.

///

public class InputBoxDialog : System.Windows.Forms.Form

{

   #region Windows Contols and Constructor

   private System.Windows.Forms.Label lblPrompt;

   private System.Windows.Forms.Button btnOK;

   private System.Windows.Forms.TextBox txtInput;

   /// <summary>

   /// Required designer variable.

///

private System.ComponentModel.Container components = null;

public InputBoxDialog()

{

//

// Required for Windows Form Designer support

//

InitializeComponent();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

#endregion

#region Dispose

/// <summary>

/// Clean up any resources being used.

///

protected override void Dispose(bool disposing)

{

if (disposing)

{

if (components != null)

{

    components.Dispose();

}

}

base.Dispose(disposing);

}

#endregion

private void InputBox_Load(object sender, System.EventArgs e)

{

   this.txtInput.Text = defaultValue;

   this.lblPrompt.Text = formPrompt;

   this.Text = formCaption;

   this.txtInput.SelectionStart = 0;

   this.txtInput.SelectionLength = this.txtInput.Text.Length;

   this.txtInput.Focus();

}

#endregion

void BtnOKClick(object sender, EventArgs e)

{

   InputResponse = this.txtInput.Text;

   this.Close();

}

void BtnCancelClick(object sender, EventArgs e)

{

   this.Close();

}

}

}

A aparência do arquivo acima será visualizada conforme a figura abaixo:

Feito isso basta usar a classe no seu projeto da seguinte forma:

Defina a função InputBox no formulário conforme o código abaixo:

public static string InputBox(string prompt, string title, string defaultValue)

{

    InputBoxDialog ib = new InputBoxDialog();

    ib.FormPrompt = prompt;

    ib.FormCaption = title;

    ib.DefaultValue = defaultValue;

    ib.ShowDialog();

    string s = ib.InputResponse;

    ib.Close();

    if (s == string.Empty)

      return "";

    else

    return s;

}

E a seguir fazer a chamada da função InputBox:

string texto = InputBox("Digite um numero","Teste de InputBox","10");

para ver a caixa de diálogo abaixo surgir:

Simples, simples assim...

Você decide.

Eu sei é apenas C# , mas eu gosto.