1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

کد ساخت inputbox در c# با توضیح موجود است !

شروع موضوع توسط hector2141 ‏12/9/12 در انجمن .Net

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    در زبان سی شارپ اینپوت باکس وجود ندارد و شما باید با 1 فرم ،1 تکست باکس ، دو دکمه (اوکی ،کنسل )،و 1 لیبل آن را تولید کنید ،با این کدها اینپوت باکس تولید میشه:
    این کد رو قبل از فرم لود بنویسین:

    public static DialogResult InputBox(string title, string promptText, ref string value)
    {
    تعریف فرم جدید،لیبل جدید،تکست باکس ودکمه ها:
    Form form = new Form();
    Label label = new Label();
    TextBox textBox = new TextBox();
    Button buttonOk = new Button();
    Button buttonCancel = new Button();

    نسبت دادن تایتل(عنوان فرم) به خصوصیت تکست فرم:
    form.Text = title;

    نسبت دادن پرامت تکست(نوشته ی لیبل) به خصوصیت تکست لیبل:
    label.Text = promptText;

    نسبت دادن ولیو(مقدار تکست) به خصوصیت تکست تکست باکس:
    textBox.Text = value;

    buttonOk.Text = "OK";
    buttonCancel.Text = "Cancel";

    در اینجااگه کاربر اوکی بزنه،نتیجه زدن دکمه اوکی=عملی که دکمه ی اوکی انجام میده :
    buttonOk.DialogResult = DialogResult.OK;

    اینم برای کنسله:
    buttonCancel.DialogResult = DialogResult.Cancel;


    اینجا موقعیت قرار گرفتن لیبل و تکست باکس و دکمه ها مشخص میشه:به این صورت که در خط زیر هرچقدر عدد اولی که نوشته شده(190) بیشتر باشد لیبل سمت راست تر قرار میگیرد.
    عدد دوم در لیبل(20):بیشتر باشد=پایین تر
    عدد سوم(372)وعدد چهارم(13) در لیبل رو نمیدونم باعث چه تغییری میشه چون وقتی تغییرشون میدم،هیچی نمیشه.
    label.SetBounds(190, 20, 372, 13);


    عدد اول در تکست باکس (12): بیشتر باشد=سمت راست تر
    عدد دوم(36): بیشتر باشد=پایین تر
    عدد سوم(372):کمتر باشد=سمت چپ تر
    عدد چهارم(20):
    این عدد ارتفاع تکست باکس رو مشخص میکنه ، اما چون مالتی لاین تکست باکس فالس است وقتی این عدد رو تغییر میدین هیچی عوض نمیشه.پس خودتون اگه مالتی لاین تکست باکسو ترو کنین ،تغییرات حاصل از عوض کردن این عدد رو مشاهده خواهید کرد.
    textBox.SetBounds(12, 36, 372, 20);


    عدد اول در دکمه اوکی و کنسل:کمتر باشد =سمت چپ تر
    عدد دوم: بیشتر باشد=پایین تر
    عدد سوم: طول دکمه است.
    عدد چهارم: عرض دکمه است.
    buttonOk.SetBounds(228, 72, 75, 23);
    buttonCancel.SetBounds(309, 72, 75, 23);

    label.AutoSize = true;
    textBox.Anchor = textBox.Anchor | AnchorStyles.Right;
    buttonOk.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
    buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;

    اندازه فرم اینپوت باکس رو مشخص میکنم،هر چه عددها بزرگتر باشند فرم بزرگتر است.عدد اول (396) طول فرم است. عدد دوم(107) عرض فرم است:
    form.ClientSize = new Size(396, 107);

    اضافه کردن کنترل ها(دکمه ها و تکست باکس و لیبل) به فرم اینپوت باکس:
    form.Controls.AddRange(new Control[] { label, textBox, buttonOk, buttonCancel });

    در خط زیر عدد 10 هر چقدر بیشتر باشد، تکست باکس طویل تر میشود:
    form.ClientSize = new Size(Math.Max(300, label.Right + 10), form.ClientSize.Height);

    بوردر استایل فرم =فیکسد دیالوگ شده است، یعنی فرم اینپوت باکس دارای دکمه های مینی مایز و ماکسی مایز نباشد.فقط دکمه ی بستن داشته باشد.
    form.FormBorderStyle = FormBorderStyle.FixedDialog;

    این خط مشخص میکند که وقتی فرم اینپوت باکس باز میشه،در وسط صفحه باشه:
    form.StartPosition = FormStartPosition.CenterScreen;

    دکمه های مینی مایز و ماکسی مایز را نداشته باشد:
    form.MinimizeBox = false;
    form.MaximizeBox = false;


    form.AcceptButton = buttonOk;
    form.CancelButton = buttonCancel;
    DialogResult dialogResult = form.ShowDialog();
    value = textBox.Text;
    return dialogResult;
    }


    کد در فرم_لود:
    private void Form1_Load(object sender, EventArgs e)
    {

    نمایش اینپوت باکس:
    string value = textBox1.Text;

    اگر کابر در فرم اینپوت باکس اوکی رو زد ، مقدار وارد شده توسط کاربر در تکست باکس قرار بگیره:
    if (InputBox("نام", "نام خود را وارد کنید", ref value) == DialogResult.OK)
    {
    textBox1.Text = value;
    }


    تکست باکس ناپدید میشه و لیبلی که مقدار تکست باکس رو داره ظاهر میشه:
    textBox1.Visible = false;
    lblname.Text = textBox1.Text;


    }

    کافیه یه تکست باکس به نام
    textBox1
    در فرم اصلی تون قرار بدین و یک لیبل به نام
    lblname
    که مقدار تکست باکس رو نمایش میده تا کد اجرا شه.