PDA

View Full Version : حرفه ای: خواندن نام کنترل از بانک اطلاعاتی



mehran788
جمعه 18 مرداد 1392, 12:11 عصر
با سلام و خسته نباشید
من می خواستم طوری عمل کنم که مثلا کاربر از بانک اطلاعاتی نام یک کنترل رو بگیره و روی اون تغییراتی اعمال کنه.
مثلا از بانک نام btnexit رو بگیره و تکست اون رو تغییر بده
تو این شرایط چطور می تونم به خصوصیات اون دسترسی داشته باشم
ممنون

danialafshari
جمعه 18 مرداد 1392, 14:31 عصر
سلام
یه چیزی تو این مایه ها میشه
private void button1_Click(object sender, EventArgs e)
{
string objName = "Button1"; // مقدارش باید از بانک خونده باشه و این برای نمونه است

switch (objName)
{
case "Button1":
button1.Text = "Danial";
//some code
return;
case "Button2":
button2.Text = "Afshari";
//some code
return;
}

plus
جمعه 18 مرداد 1392, 15:02 عصر
باید از Reflection استفاده کنید تا بتونید در زمان اجرا با داشتن نام کنترل، به مشخصاتش دسترسی پیدا کنید.

mmd2009
جمعه 18 مرداد 1392, 15:51 عصر
با سلام

شما مجموعه ای از کنترل هارو دارید در فرمتون که میتونید با استفاده از Controls به اونها دسترسی داشته باشید ، در اینجا امکاناتی نظیر متد Find برای شما در نظر گرفته شده که میتونید کلیه کنترل های فرمتون رو جستجو کنید و به اونها دسترسی داشته باشید ، به مثال زیر دقت کنید :


var btn = Controls.Find("btnexit", true).FirstOrDefault() as Button;

if (btn == null) return;
btn.Name = "btnexit2";
btn.Text = "خروج 2";


در مثال بالا من مستقیما btnexit رو به متد بعنوان Key دادم که شما میتونید این مقدار رو از بانک اطلاعاتی یا هرجایی که میخواید بخونید و بعنوان یک متغیر به این متد اون رو پاس بدید
مقدار true و False این متد به شما این امکان رو میده که فرزندان کنترل های مثلا Container رو نیز جستجو کنید و یا نکنید!!
اگر به خروجی متد Find دقت کنید میبینید که ارایه ای از کنترل هارو بهتون پاس میده ولی در مثالی که در بالا نوشتم اومدم با استفاده از Extension method که میبینید (FirstOrDefault) گفتم که اولین یا مقدار پیش فرض رو برای من در نظر بگیر که این مقدار به صورت Safely Cast تبدیل شده به Button ،

و اگر هم مجموعه ای از کنترل هارو میخوایید داشته باشید کافیه به صورت زیر عمل کنید :


var btns = Controls.Find("btnexit", true);


موفق باشید

mehran788
سه شنبه 22 مرداد 1392, 10:45 صبح
خیلی ممنون از لطفتون دوستان