PDA

View Full Version : سوال: ایجاد آرایه ای از کنترل در C#



ghasemweb
پنج شنبه 02 تیر 1390, 12:35 عصر
با سلام ، تو سی شارپ میشه مانند ویژوال بیسیک آرایه ای از کنترل ها ساخت؟
و یا روشی باشه که من با یک حلقه بتونم به 10 دکمه همزمان مقدار بدم با استفاده از ایندکس آنها

Esmail Solhkhah
پنج شنبه 02 تیر 1390, 12:49 عصر
برای دکمه هات Tag بذار از 1 تا مثلا 10
یعنی اون دکمه هایی رو که میخای مقدار دهی کنی خاصیت Tag اونارو به ترتیب از 1 الی 10 بزار
بعد

foreach (Control ctrl in this.Controls)
{
if (ctrl is Button)
{
Button CurrentButton = (ctrl as Button);
if (CurrentButton.Tag != null)
{
int tag = int.Parse(CurrentButton.Tag.ToString());
if (tag <= 10)
{
CurrentButton.Text = "your Text";
}
}
}
}

AlgorithmX
پنج شنبه 02 تیر 1390, 12:57 عصر
یعنی راهی غیر از کد نویسی نداره؟

Esmail Solhkhah
پنج شنبه 02 تیر 1390, 13:19 عصر
غیر از کدنویسی؟
برای سوال دوستمون فک نکنم چون میخاد مقدار بده و اینم منوط به کدنویسیه:متفکر:

mmd2009
پنج شنبه 02 تیر 1390, 13:31 عصر
با سلام

شما میتونید به این صورت ارایه ای از کنترل ها ایجاد بکنید


TextBox[] txtArray = new TextBox[20];
for (int i = 0; i < txtArray.Length; i++)
{
txtArray[i] = new TextBox();
txtArray[i].Name = "txt" + i.ToString();
this.Controls.Add(txtArray[i]);
txtArray[i].Parent = this;
txtArray[i].Location = new Point(50, i*25);
}

ghasemweb
شنبه 04 تیر 1390, 00:19 صبح
برای دکمه هات Tag بذار از 1 تا مثلا 10
یعنی اون دکمه هایی رو که میخای مقدار دهی کنی خاصیت Tag اونارو به ترتیب از 1 الی 10 بزار
بعد

foreach (Control ctrl in this.Controls)
{
if (ctrl is Button)
{
Button CurrentButton = (ctrl as Button);
if (CurrentButton.Tag != null)
{
int tag = int.Parse(CurrentButton.Tag.ToString());
if (tag <= 10)
{
CurrentButton.Text = "your Text";
}
}
}
}
چرا اون شرط if (tag == 10) به تعداد فورایچ تکرار میشه با این که من گفتم اگه مقدار تگش برابر 10 بود اجرا بشه و بیش از یک بار اجرا میشه؟

حال تابعی هست که مثل کد جاواسکرپت من بتونم یک کنترلی که مقدار تگش برابر با مقدار خاصی بود رو کنترل کنم مثل دستور getElementById

ghasemweb
شنبه 04 تیر 1390, 01:11 صبح
درست شد من حواسم نبود این تکه کد رو تو تایمر گذاشته بودم البته مشکل دیگه ای هم دخیل بود

conroe7000
پنج شنبه 02 آذر 1391, 16:01 عصر
سلام

من در داخل یوزر کنترل یک چک باکس دارم و من برای تیک خوردن آن بر اساس شرطی یک فانکشن نوشته ام و می خواهم توسط دکمه ای که در داخل فرم اصلی دارم بتوانم این فانکشن را که داخل یوزر کنترل هست اجرا نمایم اما نمی شود چرا و چگونه می توانم درستش کنم
راستی فانکشن از نوع پابلیک هست اما به علتی نمی توان آن را استاتیک کرد و فقط پارشیال قبول می کنه و به همین علت فانکشن در فرم اصلی دیده نمیشه
یک نمونه ساده هم ضمیمه کردم که منظرمو بهتر متوجه بشوید
ممنون

Mahmoud.Afrad
پنج شنبه 02 آذر 1391, 18:19 عصر
چون با کدنویسی یوزرکنترل رو به پنل اضافه میکنی در زمان طراحی یوزرکنترلی داخل پنل نیست که بخوای مستقیما متد را فراخوانی کنید. به این صورت میتونی انجام بدید:
(panel1.Controls[0] as UserControl1).check();
و یا کدهای لودفرم رو پاک کنی و یوزرکنترل رو از طریق toolbox روی پنل قرار بدی و به صورت زیر فراخوانی کنی:
userControl11.check();

conroe7000
جمعه 03 آذر 1391, 02:22 صبح
من تونستم با تعریف سراسری یک شی از اون یوز کنترل فانکشن ها رو دیسترسی داشته باشم اما متأسفانه نمیتونم به آبجکتهای داخل یوزم کنترل مثل چکبامس و تکست باکی و کمبو و ... دسترسی داشته باشم
برای تغییرشون حتما باید یک فانکشن تو یوزر کنترل بنویسم و تو فرم اصلیم فقط اون فانکشن رو صدا کنم
البته کارم راه افتاد اما دوست دارم بدونم چطوری میشه به خود آبجکت ها دسترسی داشته باشم >

hadidan
شنبه 07 اردیبهشت 1392, 08:01 صبح
نام کنترلها رو مبتونید بصورت عددی نام گذاری کنید مثلا txt1 ,txt2 ,txt3,...
بعد میتونید خیلی راحت مقدار کنترلها رو در حین اجرا بدست بیارید یا تغییر بدیند
for(int i=0;i<=10;i++){
MessageBox.Show(Form1.ActiveForm.Controls["txt" + i].Text);
}
موفق باشید

group45
شنبه 07 اردیبهشت 1392, 09:32 صبح
با سلام
به پست 886 از لینک زیر یه مراجعه داشته باشید مشکلتون رو باید حل کنه
http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE/page23