Desenvolvedores que vieram no Visual Basic e migram para qualquer que seja a linguagem, normalmente sentem falta de algumas funções “tradicionais”. Isso se resolve algumas formas, e no caso dos desenvolvedores C#, o caminho mais curto seria adicionar uma referência a dll Microsoft.VisualBasic, fazendo com que todas as funções legadas da linguagem tornem disponíveis.
Mas depender de uma linguagem antiga às vezes dá um mal estar, além do fato de, sabendo de todo o poder que a nova linguagem dispõe, pra usar as funções antigas?
Pois bem, para uma necessidade extremamente simples em um dos sistemas que estive construindo, precisei coletar um dado de forma tão simples que não fazia sentido algum criar um form para isso. Nisso, antes de sair fazendo alguma coisa, decidi dar uma pesquisada na net para ver se alguém já tinha aprontado alguma coisa nesse sentido, e realmente encontrei. O código abaixo é um form que possuir as mesmas características do InputBox:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 | 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 #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.lblPrompt = new System.Windows.Forms.Label(); this.txtInput = new System.Windows.Forms.TextBox(); this.btnOK = new System.Windows.Forms.Button(); this.btnCancel = new System.Windows.Forms.Button(); this.SuspendLayout(); // // lblPrompt // this.lblPrompt.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.lblPrompt.BackColor = System.Drawing.SystemColors.Control; this.lblPrompt.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblPrompt.Location = new System.Drawing.Point(12, 9); this.lblPrompt.Name = "lblPrompt"; this.lblPrompt.Size = new System.Drawing.Size(302, 82); this.lblPrompt.TabIndex = 3; // // txtInput // this.txtInput.Location = new System.Drawing.Point(8, 100); this.txtInput.Name = "txtInput"; this.txtInput.Size = new System.Drawing.Size(379, 20); this.txtInput.TabIndex = 0; // // btnOK // this.btnOK.Location = new System.Drawing.Point(320, 10); this.btnOK.Name = "btnOK"; this.btnOK.Size = new System.Drawing.Size(75, 25); this.btnOK.TabIndex = 4; this.btnOK.Text = "&OK"; this.btnOK.UseVisualStyleBackColor = true; this.btnOK.Click += new System.EventHandler(this.BtnOKClick); // // btnCancel // this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnCancel.Location = new System.Drawing.Point(320, 41); this.btnCancel.Name = "btnCancel"; this.btnCancel.Size = new System.Drawing.Size(75, 25); this.btnCancel.TabIndex = 5; this.btnCancel.Text = "&Cancel"; this.btnCancel.UseVisualStyleBackColor = true; this.btnCancel.Click += new System.EventHandler(this.BtnCancelClick); // // InputBoxDialog // this.AcceptButton = this.btnOK; this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.BackColor = System.Drawing.SystemColors.Control; this.CancelButton = this.btnCancel; this.ClientSize = new System.Drawing.Size(398, 128); this.Controls.Add(this.btnCancel); this.Controls.Add(this.btnOK); this.Controls.Add(this.txtInput); this.Controls.Add(this.lblPrompt); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "InputBoxDialog"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "InputBox"; this.Load += new System.EventHandler(this.InputBox_Load); this.ResumeLayout(false); this.PerformLayout(); } private System.Windows.Forms.Button btnCancel; #endregion #region Private Variables string formCaption = string.Empty; string formPrompt = string.Empty; string inputResponse = string.Empty; string defaultValue = string.Empty; #endregion #region Public Properties public string FormCaption { get { return formCaption; } set { formCaption = value; } } // property FormCaption public string FormPrompt { get { return formPrompt; } set { formPrompt = value; } } // property FormPrompt public string InputResponse { get { return inputResponse; } set { inputResponse = value; } } // property InputResponse public string DefaultValue { get { return defaultValue; } set { defaultValue = value; } } // property DefaultValue #endregion #region Form and Control Events 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(); } } } |
Abaixo segue a função estática que permite a chamada da mesma forma que se fazia no VB:
1 2 3 4 5 6 7 8 9 10 11 | 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(); return s; } |
Além de resolver o problema, deu também aquele saudosismo. Bom, mesmo assim vou continuar no C#.
Referência: http://csharp.wikia.com/
Abraços
Tomás Vásquez
www.tomasvasquez.com.br