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 " valorRetornado = InputBox(Prompt, Titulo, respostaPadrao,
XPos, YPos) 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);
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 Constructorprivate 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.
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
C# - Usando Listas com elegância - Macoratti.net
C# - Iterando através de uma enumeração - Macoratti.net