PDA

نسخه کامل مشاهده نسخه کامل : دستور shortcut !



3Dmajid
03-11-2008, 18:19
فرض کنید که من یه button درست کردم و دستورات مربوط به اون دکمه رو هم نوشتم.

حالا یه منو میسازم. میخوام هرکی روی یکی از گزینه های این منو کلیک کنه همون دستوری که روی دکمه نوشتم اجرا کنه، حتما باید دوباره اون دستور رو بنویسم ؟!!

آیا کدی وجود داره که بدون نوشتن مجدد دستور اون دستور رو برام اجرا کنه ؟

بهرام_62
03-11-2008, 23:42
Call Command1_Click
مثلا اگر کد رو توی دابل کلیک نوشته شده باشه باید همون رویداد رو بنویسی
یعنی
Call Label1_DblClick
فهمیدی؟

_H2_
03-11-2008, 23:54
سلام

حالا یه منو میسازم. میخوام هرکی روی یکی از گزینه های این منو کلیک کنه همون دستوری که روی دکمه نوشتم اجرا کنه، حتما باید دوباره اون دستور رو بنویسم ؟!!

هیچگاه در هیچ محیطی و هیچ زبان برنامه نویسی (ویندوز و وب و قابل حمل و... و...) به هیچ وجه همچین مواردی دستور را copy و paste نکنید، این برخلاف اصول برنامه نویسی ساختار یافته است.

1) راه ساده در اکثر زبان های برنامه نویسی این است که یک متد بنویسید و از دو رویداد مختلف این متد را فراخوانی کنید.

2) میتوان کد را در یکی از روال های رویداد نوشت و در روال دیگر این رول را فراخانی کرد.

3) در VB9 میتوان از فرمان Me.buttonname.PerformClick برای شبیه سازی رویداد یک دکمه یا منو استفاده کرد.

4)Handler کردن متدها به یک روال واحد (در صورت یکسان بودن امضای توابع، بهترین روش خواهد بود.)
این کار با دستور AddHandler و یا جفت WithEvents و Handles امکان پذیر است.

در VB6 هندلر رویداد واحد بود و بر اساس نام روال صورت میگرفت!!!!!! (کاملاً ضد OOP)

در نسخه جدید شما میتوانید بینهایت رویداد از کنترلرها و بخش های مختلف را به یک روال یکسان handler کنید و هر زمان که خواستید این ارتباط را قطع و یا وصل کنید(AddHandler+RemoveHandler) و یا از سیستم خودکار دو کلمه کلیدی WithEvents+Handles استفاده کنید

من برای وضوح بیشتر خط ها را به چندین خط دارای آندرلاین شکسته ام، شما میتوانید کلش را در یک خط بنویسید.
(نمونه هندلر چند رویداد با امضای delegate نوع System.EventHandler)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

3Dmajid
04-11-2008, 14:34
من این کار رو کردم ولی نشد !!!!!!!!!!!!!!

مشکل چیه ؟

من این کد رو نوشتم ولی عمل نکرد :

برای button اولی دستور اضافه کردن یک string رو دادم، برای button دومی هم کد زیر رو نوشتم تا دستور button اولی رو اجرا کنه ولی نشد ! :


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click, Button1.Click
End Sub

_H2_
04-11-2008, 18:09
سلام

برای button اولی دستور اضافه کردن یک string رو دادم، برای button دومی هم کد زیر رو نوشتم تا دستور button اولی رو اجرا کنه ولی نشد ! :
:31::31::31:

فکر کنم یا بد توضیح دادم یا بد متوجه شدید.
کلمه Handles یک کمی با AddHandler تفاوت دارد!

با این کدی که شما نوشته اید اگر هر کدام از دو دکمهع کلیک شوند روال Button2_Click اجرا خواهد شد.

یعنی ما رویدادها را به هم وصل نمیکنیم، فقط میگوییم در قبال چه رویدادهایی باید یک متد یا روال مشخص اجرا شود.

شما باید کدی مشترکی را که میخواهید در قبال هر دو رویداد اجرا شود در همین متد Button2_Click تان بنویسید نامش هم مهم نیست...
برای هر متدی با امضای هماهنگ اگر آخرش Handles Button2.Click, Button1.Click را داشته باشد در قبال هر دو رویداد همان متد، فقط خودش اجرا خواهد شد.

3Dmajid
04-11-2008, 18:22
واقعا ازتون ممنونم، الان خیلی خوب متوجه شدم.

ولی خوب شما هم قبول کنید که یه ذره بالای لیسانس توضیح میدید :31:

اون وقت یکی مثل من که هنوز دیپلم نگرفته، نمیفهمه ! :46:

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

ممنون از زحمات شما :11:

sina_20066
12-11-2008, 20:48
دوست عزیز فکر میکنم اگر انگشتان خود را با دو دکمه Ctrl+C & Ctrl+V تماس دهید خیلی راحت ترید وقتی یک زبان اجازه این کار را به شما میدهد از این عمل استفاده کنید و لذت ببرید (تو Cدیگه کپی پستی وجود نداره!)


موفق باشید

Empty
12-11-2008, 21:05
چرا از این استفاده نمیکنی؟؟
call cmd_Click

3Dmajid
12-11-2008, 21:48
دوست عزیز فکر میکنم اگر انگشتان خود را با دو دکمه Ctrl+C & Ctrl+V تماس دهید خیلی راحت ترید وقتی یک زبان اجازه این کار را به شما میدهد از این عمل استفاده کنید و لذت ببرید (تو Cدیگه کپی پستی وجود نداره!)


منظورتون رو متوجه نشدم ... یعنی دوباره همون کدی که واسه ی یه کنترل نوشتیم واسه shortcut هم بنویسیم ؟
این کار اصلا با عقل جور در نمیاد و طبق حرفی که بالا گفته شد :


هیچگاه در هیچ محیطی و هیچ زبان برنامه نویسی (ویندوز و وب و قابل حمل و... و...) به هیچ وجه همچین مواردی دستور را copy و paste نکنید، این برخلاف اصول برنامه نویسی ساختار یافته است

وقتی vb2008 میاد و این امکان رو به راحتی آب خوردن به کاربراش میده دیگه چه دلیلی داره که ما بیام انگشتمون رو با کلید های ctrl+c و ctrl+v تماس بدیم ؟