PDA

View Full Version : چطور می شه یه کنترل به عنوان آرگومان یه متد قرار داد ...



mahdi5121
دوشنبه 27 تیر 1390, 00:05 صبح
سلام ...
چطور می تونم آرگومان ورودی یک متد را از جنس کنترل بگیرم.

منظورم اینه که مثلا" من سه تا TextBox دارم که تو هر کدومش یه عدد هست، یه متد درست کردم که توش می یاد اون عدد رو از آرگومان می خونه تو یه لیبل چاپ می کنه.

تو فراخوانی متد که اسم یکی از اون تکست باکس ها رو می زارم.
می خوام اسم اون آرگومان رو وفتی تو متد می نویسم و نقطه رو می زنم ، پراپرتی های تکست باکس بیاد ...

البته تکست باکس یه مثال بود ، کنترل های دیگم هست مثل کومبو باکس ، لیست باکس، لیبل و ... .
ممنون...

پارسا کیانبخت
دوشنبه 27 تیر 1390, 02:36 صبح
با سلام.

دوست عزیز کاش کد متدی که نوشتید رو هم قرار میدادید. امیدوارم که مشکل شما رو درست متوجه شده باشم.

آرگومان رو از چه نوعی گرفتید؟ Control؟

اگر آرگومان رو از نوع Control گرفته اید و بهش یه کنترل مثله TextBox ارسال میکنید و میخواهید در بدنه ی متد به پراپرتی های TextBox دسترسی داشته باشید، باید عملیات Casting رو انجام بدید.

(البته این کاری که شما میخواید انجام بدید برای بنده مبهمه. چرا خود رشته رو ارسال نمیکنید؟ چه نیازی به ارسال کنترل هست؟ )

mahdi5121
دوشنبه 27 تیر 1390, 12:07 عصر
ممنون ، درسته حق با شماست تو این مثال ، درست کردن متد کار بی جایی هست اما من چند تا کنترل کومبو باکس دارم که وقتی رویداد لود فرم اتفاق می افته ، مشخصه ی DisplayMember و ValueMember و ِ DataSource همشون از یه جدول تو بانک اطلاعاتی پر می شه؛ رو این حساب می خوام تو رویداد لود فرم ،دیگه کل دستورات رو برای هر کومبو باکس، ننویسم ، فقط بنویسم :

Fill_ComboBox(نام کنترل);

و توی متد، به عنوان آرگومان ورودی ، نام کومبو باکس رو بگیره و عملیات رو انجام بده .

گفتم یه مثال ساده بزنم، می خوام بدونم پارامتر و آرگومان چطوری باید پر بشند.

حالا من همون مثال TextBox ها رو درست کردم که ضمیمه هم کردم،

وقتی روی باتون کلیک می کنیم،متد با یه پارامتر که نام یکی از اون TextBox ها هست فراخوانی می شه و در متد، به عنوان آرگومان ورودی، نام کنترل گرفته می شه و از مشخصه ی Text اون آرگومان به عنوان، Text لیبل استفاده می شه .


ممنون می شم این مثال رو درست کنید، چون ارور می ده.

http://www.up.iranblog.com/images/tvyc03fkuaievovezukj.rar

خیلی ممنون ...

salehbagheri
دوشنبه 27 تیر 1390, 14:01 عصر
خب این چه کاری هست که میخواهید انجام بدید؟

شما یه متد برای ارتباط با DataBase بنویسید که ورودیهاش موارد منحصر به فرد هر ComboBox هست! بعد برای هر کدام، این متد را فراخوانی کنید.

ارسال یک کنترل به عنوان Argument نیز باید به شکل Reference صورت گیرد تا با اجرای متد، تغییرات بر کنترل اصلی اعمال بشه! (*) که من خودم این روش رو اصلاً نمی پسندم.

روشهای بسیار بهتر و بهینه تری وجود داره! فقط باید بیشتر تشریح کنید.

برنامه شما هم در این خط اشکال داره! زیرا ورودی متد شما از نوع Control هست نه String!


Fill_Lable(textBox2.Text); //Fill_Lable(textBox2); is Correct!