نمایش InputBox در #C
در این مقاله قصد داریم یک InputBox تقریبا سفارشی را در #C با استفاده از یک متد استاتیک شبیه سازی نماییم طرح کلی به این صورت خواهد بود که شما عنوان ،متن پیغام را تعیین کرده و پنجره InputBox به کاربر نمایش داده می شود و مقدار وارد شده را از آن دریافت خواهیم کرد. شکل کلی آن به صورت زیر خواهد بود .
ابتدا یک پروژه جدید windows Form ایجاد نمایید . یک کلاس به اسم InputBox به آن اضافه نمایید و یک متد استاتیک به اسم Show رو در آن به صورت زیر پیاده سازی کنید :
در متد زیر از کلاس Form یک نمونه ای ساخته و چهار نمونه از کنترل های (Button,Textbox,Label) برای نمایش و گرفتن مقدار ورودی از کاربر را کاربر را ایجاد کرده و آنها را به شی Form ساخته شده اضافه می کنیم .
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 |
using System.Windows.Forms; using System.Drawing; public class InputBox { public static DialogResult Show(string Title,ref string Value,string Prompt) { // Form formObj = new Form(); Label lblPrompt = new Label() { AutoSize=true}; Button btnOk = new Button() { Text="OK",DialogResult=DialogResult.OK}; Button btnCancel = new Button() { Text="Cancel",DialogResult=DialogResult.Cancel}; TextBox txtInput = new TextBox(); formObj.Text = Title; lblPrompt.Text = Prompt; // Set bounds lblPrompt.SetBounds(9, 20, 372, 13); txtInput.SetBounds(12, 36, 372, 20); btnOk.SetBounds(228, 72, 75, 23); btnCancel.SetBounds(309, 72, 75, 23); lblPrompt.SetBounds(9, 20, 372, 13); txtInput.SetBounds(12, 36, 372, 20); btnOk.SetBounds(228, 72, 75, 23); btnCancel.SetBounds(309, 72, 75, 23); formObj.ClientSize = new Size(396, 107); // Add controls formObj.Controls.AddRange(new Control[]{txtInput,btnCancel,btnOk,lblPrompt}); //Set Form attribute formObj.StartPosition = FormStartPosition.CenterParent; formObj.FormBorderStyle = FormBorderStyle.FixedDialog; formObj.MaximizeBox = false; formObj.MinimizeBox = false; formObj.AcceptButton = btnOk; formObj.CancelButton = btnCancel; DialogResult drObj = formObj.ShowDialog(); Value = txtInput.Text; return drObj; } } |
یک InputBox در حداقل ترین حالت نیازمند سه کنترل (textbox,Label,Title) می باشد که در ابتدای تابع از هر کدام از آنها یک نمونه ایجاد کرده ایم و یک سری مشخصات و تنظیمات را هم برای هر کدام از آنها جهت نمایش بهتر اضافه کرده ایم .
یکی از پارامترها را به صورت ref تعیین شده است به این دلیل چون مقدار ورودی کاربر برای ما مهم و مورد نیاز است پس مقدار وارد شده توسط کاربر را در متغییر مربوطه قرار می دهیم .[آدرس متغییر مربوطه را به تابع فرستاده ایم]
خروجی متد را از نوع DialogResualt تعیین کرده ایم به این دلیل که تشخصی دهیم کاربر کدام یک از دو دکمه Ok یا Cancel را کلیک کرده است .
و در پایان برای فراخوانی و نمایش InputBox به صورت زیر عمل خواهیم کرد :
1 |
InputBox.Show("Reset Password",ref val, "Please Enter Your email"); |
و می توان چک کرد که کاربر کدام دکمه را کلیک کرده است :
1 |
if (InputBox.Show("Reset Password", ref val, "Please Enter Your email") == DialogResult.OK) Email = val; |
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.