ارتباط textbox دینامیک با trackbar
سلام و خسته نباشید خدمت دوستان عزیز
سوالی داشتم:
من تعدادی textbox به صورت دینامیک ساختم. می خوام کاربر با انتخاب هر کدوم از این textbox ها با استفاده از trackbar که بازه 0-9 داره،بتونه مقدار هرکدام از textbox را تغییر بده...
ممنون میشم راهنمایی کنید.
کد ساخت textbox:
for (int i = 0; i <= 9; i++)
{
System.Windows.Forms.TextBox tb0_name = new System.Windows.Forms.TextBox();
tb0_name.Size = new Size(78, 20);
tb0_name.Location = new System.Drawing.Point(-715 + i * 80, -150 + 9 * 25);
//tb0_name.BackColor = Color.Aqua;
tb0_name.Name = "tbg" + i;
panel1.Controls.Add(tb0_name);
}
نقل قول: ارتباط textbox دینامیک با trackbar
فکر میکنم شما باید کنترل فعال رو به دست بیاری و با کلیک روی هر کلید متن اونو تغییر بدی
در هر Container فقط یک کنترل میتونه در حالت فعال باشه. با استفاده از نام Container و خاصیت ActiveControl میتونی به TextBox فعال دسترسی داشته باشی
یک راه دیگه هم هست که فکر می کنم بهتر باشه
شما با فعال شدن هر TextBox یک متغیر رو در فرمت Set کن که معلوم بشه کدوم TextBox فعال شده چون با کلیک روی کلیدها کنترل فعال تعییر میکنه اینطوری میتونی محتوی آخرین TextBox فعال رو تغییر بدی
نقل قول: ارتباط textbox دینامیک با trackbar
راه حل ساده تر! این تکست باکس ها رو که به فرم اضافه کردی درون یک آرایه هم نگه دار! بازه ترک بار رو هم 0 تا 9 بده! حالا مقدار انتخابی در ترک بار میشه ایندکس تکست باکس در آرایه!
تکس باکس ها را در موقعه ایجاد نامرئی کن بعد توی رویداد تغییر مقدار ترک بار یه حلقه بذار ک تمام تکست باکس هارو (درون آرایه) نامرئی کنه بعد تکست باکس درون آرایه با ایندکس مقدار ترک بار رو مرئی!
به همین سادگی!
جمعاً چهار خط کد میبره!
1- تعریف آرایه به درون کلاس (نه متد)
2- اضافه به آرایه (توی متد ایجاد تکت باکس ها)
3- رویداد تغییر مقدار ترک بار رو ایجاد کنی
4- داخل این رویداد (با هر تغییر مقدار) تمام تکست باکس های ارایه رو نامرئی کنی بعد تکست باکس مورد نظر را مرئی کن!
تمام
نقل قول: ارتباط textbox دینامیک با trackbar
نقل قول:
نوشته شده توسط
am_al_59
فکر میکنم شما باید کنترل فعال رو به دست بیاری و با کلیک روی هر کلید متن اونو تغییر بدی
در هر Container فقط یک کنترل میتونه در حالت فعال باشه. با استفاده از نام Container و خاصیت ActiveControl میتونی به TextBox فعال دسترسی داشته باشی
یک راه دیگه هم هست که فکر می کنم بهتر باشه
شما با فعال شدن هر TextBox یک متغیر رو در فرمت Set کن که معلوم بشه کدوم TextBox فعال شده چون با کلیک روی کلیدها کنترل فعال تعییر میکنه اینطوری میتونی محتوی آخرین TextBox فعال رو تغییر بدی
عزیزم میشه روش دومی که فرمودین رو با کد برام بیشتر توضیح بدید(نمی دونم چجوری میشه textbox فعال که به صورت دینامیک هست رو بدست آورد)
نقل قول: ارتباط textbox دینامیک با trackbar
نقل قول:
نوشته شده توسط
RmeXXXXXXXXX
راه حل ساده تر! این تکست باکس ها رو که به فرم اضافه کردی درون یک آرایه هم نگه دار! بازه ترک بار رو هم 0 تا 9 بده! حالا مقدار انتخابی در ترک بار میشه ایندکس تکست باکس در آرایه!
تکس باکس ها را در موقعه ایجاد نامرئی کن بعد توی رویداد تغییر مقدار ترک بار یه حلقه بذار ک تمام تکست باکس هارو (درون آرایه) نامرئی کنه بعد تکست باکس درون آرایه با ایندکس مقدار ترک بار رو مرئی!
به همین سادگی!
جمعاً چهار خط کد میبره!
1- تعریف آرایه به درون کلاس (نه متد)
2- اضافه به آرایه (توی متد ایجاد تکت باکس ها)
3- رویداد تغییر مقدار ترک بار رو ایجاد کنی
4- داخل این رویداد (با هر تغییر مقدار) تمام تکست باکس های ارایه رو نامرئی کنی بعد تکست باکس مورد نظر را مرئی کن!
تمام
ممنونم از پاسخ شما
اگر امکان دارد با کد بیشتر توضیح بدید. خیلی واضح نیست برام. متشکرم
نقل قول: ارتباط textbox دینامیک با trackbar
با کد خودت برات توضیح میدم
قبلش یک فیلد در برنامت تعریف میکنی که کدش این میشه
private TextBox lastActiveTextBox;
در حلقه ای که نوشتی هم یک خط در انتها اضافه میکنی که کد حلقه میشه این
for (int i = 0; i <= 9; i++)
{
System.Windows.Forms.TextBox tb0_name = new System.Windows.Forms.TextBox();
tb0_name.Size = new Size(78, 20);
tb0_name.Location = new System.Drawing.Point(-715 + i * 80, -150 + 9 * 25);
tb0_name.Name = "tbg" + i;
tb0_name.GotFocus += tb0_name_GotFocus;//کد اضافه شده
}
همونطور که در بالا میبینی رویداد GotFocus که در زمان فعال شدن TextBox رخ میده رو متصل کردی به متدی به نام tb0_name_GotFocus
برای نوشتن متد هم کدش میشه این:
void tb0_name_GotFocus(object sender, EventArgs e)
{
lastActiveTextBox = (TextBox)sender;
}
نقل قول: ارتباط textbox دینامیک با trackbar
نقل قول:
نوشته شده توسط
am_al_59
با کد خودت برات توضیح میدم
قبلش یک فیلد در برنامت تعریف میکنی که کدش این میشه
private TextBox lastActiveTextBox;
در حلقه ای که نوشتی هم یک خط در انتها اضافه میکنی که کد حلقه میشه این
for (int i = 0; i <= 9; i++)
{
System.Windows.Forms.TextBox tb0_name = new System.Windows.Forms.TextBox();
tb0_name.Size = new Size(78, 20);
tb0_name.Location = new System.Drawing.Point(-715 + i * 80, -150 + 9 * 25);
tb0_name.Name = "tbg" + i;
tb0_name.GotFocus += tb0_name_GotFocus;//کد اضافه شده
}
همونطور که در بالا میبینی رویداد GotFocus که در زمان فعال شدن TextBox رخ میده رو متصل کردی به متدی به نام tb0_name_GotFocus
برای نوشتن متد هم کدش میشه این:
void tb0_name_GotFocus(object sender, EventArgs e)
{
lastActiveTextBox = (TextBox)sender;
}
دوست عزیز ممنونم ازت
تا اینجا رو گرفتم
اما چجوری این textbox رو به track bar متصل کنم؟ همچنین چجوری می تونم نام اون textbox را بدست بیارم؟
نقل قول: ارتباط textbox دینامیک با trackbar
شما خود TextBox فعال رو داری دیگه هرجای کدت بخوای بهش دسترسی داری
مثلاً روی یک Button که کلیک میکنی میخوای توی TextBox فعالت 1 قرار بگیره کدش میشه این:
private void button1_Click(object sender, EventArgs e)
{
lastActiveTextBox.Text = "1";
}