امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
کد ساخت inputbox در c# با توضیح موجود است !
نویسنده پیام
f_talebi آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 3
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 4
( 1 تشکر در 1 ارسال )
ارسال: #1
کد ساخت inputbox در c# با توضیح موجود است !
در زبان سی شارپ اینپوت باکس وجود ندارد و شما باید با 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
که مقدار تکست باکس رو نمایش میده تا کد اجرا شه.

اینم همون کد بدون توضیح:
کد:
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;
label.SetBounds(190, 20, 372, 13);
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;
form.ClientSize = new Size(396, 107);
form.Controls.AddRange(new Control[] { label, textBox, buttonOk, buttonCancel });
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;

}

آدرس منبعی که کد رو ازش گرفتم و کدهای بیشتر مربوط به این زمینه:
http://www.p2p.dotnetsource.com/default....ts&t=10649
(آخرین ویرایش در این ارسال: ۲۰-دى-۱۳۸۹, ۱۷:۴۳:۵۰، توسط ajlajlajl.)
۱۹-دى-۱۳۸۹, ۲۲:۰۰:۱۸
ارسال‌ها
پاسخ
تشکر شده توسط : omidmohamadi
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #2
RE: کد ساخت inputbox در c# با توضیح موجود است !
سلام. چند تا چیز

لطفا کد هاتونو توی تگ کد بگذارید

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

اینم برای کنسله:
buttonCancel.DialogResult = DialogResult.Cancel
نیازی به این کار نیست، چون وقتی این کارو:
نقل قول: form.AcceptButton = buttonOk;
form.CancelButton = buttonCancel;
بکنید به صورت اتوماتیک دکمه ها مقدار DialogResult رو تغییر میدن


نقل قول: عدد سوم(372)وعدد چهارم(13) در لیبل رو نمیدونم باعث چه تغییری میشه چون وقتی تغییرشون میدم،هیچی نمیشه.
عدد چهارم(20):نمیدونم
همونطور که گفتی دو تا آخری طول و عرض کنترل رو مشخص میکنه. ولی توی Label و Textbox قضیه فرق داره. چون توی Label خاصیت AutoSize اگه True باشه طول و عرضو اوتو تغییر میده و اجازه دستکاری به شما نمیده. Textbox هم تا وقتی multiline ش false باشه اجازی تغییر Height رو نمیده.

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



و در کل این کار اصلا جالب نیست. توی همون منبعتون. تیکه دوم که با کلاس نوشته رو استفاده کنید!

میزان رای دشمن است!
[تصویر:  cff100.png]
۲۰-دى-۱۳۸۹, ۱۸:۰۸:۲۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : f_talebi
f_talebi آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 3
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 4
( 1 تشکر در 1 ارسال )
ارسال: #3
RE
اوه
مرسی
حرفاتون واقعا کمک میکنه...
۲۰-دى-۱۳۸۹, ۱۸:۴۰:۲۳
ارسال‌ها
پاسخ
f_talebi آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 3
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 4
( 1 تشکر در 1 ارسال )
ارسال: #4
RE: کد ساخت inputbox در c# با توضیح موجود است !
اما چند مشکل دارم !

buttonOk.DialogResult = DialogResult.OK;
buttonCancel.DialogResult = DialogResult.Cancel
وقتی این خط ها رو برداشتم ، اوکی برنامه کار نکرد
!

اوتوسایز لیبل رو فالس کردم ، اما باز وقتی اون عددها رو تغییر میدم ،هیچی نمیشه!

اما مطابق گفته شما عدد چهارم (20) تو تکست باکس رو میشه با ترو کردن مالی لاینش عوض کرد.
۲۰-دى-۱۳۸۹, ۲۰:۲۳:۳۴
ارسال‌ها
پاسخ
f_talebi آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 3
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 4
( 1 تشکر در 1 ارسال )
ارسال: #5
RE: کد ساخت inputbox در c# با توضیح موجود است !
مشکلم حل شد !!!!!
۰۲-بهمن-۱۳۸۹, ۲۰:۳۲:۰۲
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] دستور inputbox mehrdad8 2 2,280 ۱۵-تير-۱۳۹۴, ۱۷:۰۳:۳۶
آخرین ارسال: mehrdad8

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS