PDA

View Full Version : تعریف تکست باکس به شکل ارایه



mohsen.hex
یک شنبه 15 مرداد 1391, 23:55 عصر
سلام دوستان
من دارم یک برنامه مینویسم که 30 تا خط و هر خط 4 تا تکست باکس داره و اطلاعات رو از ارایه میخونه و میریزه توی این تکست باکس ها و بعد از تغیر باز باید ذخیره کنه خوب حالا مشکل اینجاست که خیلی زمان بر هست که برای هر تکست باکس جدا برنامه نویسی کنم و اطلاعاتم رو میریزم توی ارایه و بعد از محاسبه باید ریخته بشه توی تکست باکس ردیف اول حالا ردیف دوم از نظر محاسبه دقیقا مثل ردیف اول هست تا ردیف 30 !!

به نظر شما چطوری این مشکل رو حل کنم؟؟
ایا میشه تکست باکس یا ماسک باکس رو به شکل ارایه تعریف کرد؟؟

the king
دوشنبه 16 مرداد 1391, 00:08 صبح
سلام دوستان
من دارم یک برنامه مینویسم که 30 تا خط و هر خط 4 تا تکست باکس داره و اطلاعات رو از ارایه میخونه و میریزه توی این تکست باکس ها و بعد از تغیر باز باید ذخیره کنه خوب حالا مشکل اینجاست که خیلی زمان بر هست که برای هر تکست باکس جدا برنامه نویسی کنم و اطلاعاتم رو میریزم توی ارایه و بعد از محاسبه باید ریخته بشه توی تکست باکس ردیف اول حالا ردیف دوم از نظر محاسبه دقیقا مثل ردیف اول هست تا ردیف 30 !!

به نظر شما چطوری این مشکل رو حل کنم؟؟
ایا میشه تکست باکس یا ماسک باکس رو به شکل ارایه تعریف کرد؟؟

شدنش میشه ، همه کنترل ها چه TextBox باشند و چه نباشند توی مجموعه Controls داخل فرم در دسترسه، اما چون ممکن ترتیب قرار گرفتن
کنترل ها تو این مجموعه Controls اون چیزی نباشه که شما می خواهید، بهتره که از اسمشون استفاده کنید.
فرضا متغیر عددی i شماره TextBox باشه، وقتی شما i رو برابر 4 قرار می دهید، کد زیر مقدار textBox4 رو بهتون میده یا تغییر میده :

int i = 4;
this.Controls.Find("textBox" + i.ToString(), true)[0].Text = "Hello";



int i = 4;
string s = this.Controls.Find("textBox" + i.ToString(), true)[0].Text;


یا فرضا مقدار دهی همه TextBox ها در یک حلقه :

double[] values = { 12, 13, 14, 15 };
for (int i = 1; i <= values.Length; i++)
{
this.Controls.Find("textBox" + i.ToString(), true)[0].Text = values[i - 1].ToString();
}

mohsen.hex
دوشنبه 16 مرداد 1391, 13:56 عصر
this.Controls.Find("textBox" + i.ToString(), true)[0].Text = values[i - 1].ToString();

ببخشید من این جور سوال های ابتدایی میپرسم
true چرا به عنوان ارگومان نوشته شده؟؟

داستان این کروشه ها چی هست؟؟

mohsen.hex
دوشنبه 16 مرداد 1391, 16:32 عصر
سلام از این روش چطوری برای کمبو باکس استفاده کنم؟

این رو نوشتم ولی میگه slectedindex نداریم!
this.Controls.Find("comboBox" + z2.ToString(), true)[0].SelectedIndex = data[z - 1].ToString();//zzzz

the king
دوشنبه 16 مرداد 1391, 16:51 عصر
سلام از این روش چطوری برای کمبو باکس استفاده کنم؟

این رو نوشتم ولی میگه slectedindex نداریم!
this.Controls.Find("comboBox" + z2.ToString(), true)[0].SelectedIndex = data[z - 1].ToString();//zzzz


this.Controls.Find("textBox" + i.ToString(), true)[0].Text = values[i - 1].ToString();

ببخشید من این جور سوال های ابتدایی میپرسم
true چرا به عنوان ارگومان نوشته شده؟؟

داستان این کروشه ها چی هست؟؟


خود فرم و هر کنترلی روی فرم یک مجموعه Controls داره که کنترل های فرزند اش داخل اون مجموعه هستند اما فقط فرزندانش، نه نوه و نتیجه هایش.
فرضا اگه TextBox مورد نظر داخل یک GroupBox باشه دیگه فرزند فرم به حساب نمیاد و در مجموعه Controls فرم نیست. برای همین از Find
به همراه اون پارامتر True استفاده می کنیم. وقتی True باشه نه تنها فرزندانش بلکه نوه و نتیجه و ... هایش رو هم برای پیدا کردن اون کنترل مورد نظر
جستجو می کنه. اگر False می بود فقط در فرزندانش جستجو می کرد و کاری به نوه ها و نتیجه هایش نداشت.

وقتی شما از Find استفاده می کنید جواب الزاما یک کنترل نیست، آرایه ای از کنترل ها است، برای همین اون [0] رو اضافه می کنیم، یعنی
فقط اولین مورد پیدا شده رو انتخاب می کنیم.

در مورد TextBox ها شما با مشخصه Text اش سر و کار داشتید که همه Control ها این مشخصه Text رو دارند، به همین جهت کامپایلر مشکلی
با Text. نداشت و خطا نمی گرفت. اما SelectedIndex یک مشخصه عمومی نیست و همه Control ها این مشخصه رو ندارند، به همین جهت
خطا میده که این یک Control ئه و چیزی به نام SelectedIndex نداره. باید به کامپایلر حالی کنید که این چیزی که پیدا شده یک ComboBox ئه،
در ضمن SelectedIndex یک عدد ئه، اگر [data[z - 1 شما عدد ئه از ()ToString استفاده نکنید چون رشته رو که نمیشه تو عدد ریخت :

((ComboBox)this.Controls.Find("comboBox" + z.ToString(), true)[0]).SelectedIndex = data[z - 1];


و اگر [data[z - 1 رشته است، در SelectedItem قرار دهید :

((ComboBox)this.Controls.Find("comboBox" + z.ToString(), true)[0]).SelectedItem = data[z - 1];