View Full Version : سوال: ميشه يه رويداد خاص از يك كامپوننت رو به يه رويداد خاص از كامپوننت ديگه نسبت داد؟
combo_ci
یک شنبه 17 آذر 1387, 21:00 عصر
سلام
از دوستان كسي ميدونه چطوري ميشه يه رويداد خاص از يك كامپوننت رو به يه رويداد خاص از كامپوننت ديگه نسبت داد؟
مثلا يه فرم داريم كه يه panel داره ...وقتي روpanel (در designer ) دابل كليك كرد به جاي رويداد پيش فرض panel رويداد load فرم صدا زده بشه
ممنون
mostafaaa
یک شنبه 17 آذر 1387, 22:16 عصر
سلام دوست من
Public Class Form1
Private Sub Panel1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.DoubleClick
OnLoad(New EventArgs)
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
MsgBox("OK")
End Sub
End Class
combo_ci
دوشنبه 18 آذر 1387, 22:30 عصر
سلام
اين كدي كه شما نوشتبد براي زمان run time درست هست اما من منظورم در designer بود يعني مثلا فرمي كه داراي يك فرم و يك panel هست و panel رو fill dock كرديم كه تمام فرم رو بپوشونه ....حالا وقتي رو فرم در designer دابل كليك كني رويداد paint از panel در كد مياد ....من ميخواستم ببينم ميشه وقتي روي panel دابل كليك شد عوض رويداد پيشفرض خودش رويداد load فرم در كد بياد يعني يه جورايي يه يه رويداد از يه كامپوننت در designer يه رويداد ديگه نسبت بديم
mostafaaa
سه شنبه 19 آذر 1387, 09:35 صبح
سلام دوست من
من متوجه نمیشم این کار به چه درد شما میخوره.
همه میدونند توی محیط VisualStudio روی هر کنترلی که دابل کلیک کنی مهمترین رویداد مربوط به اون(که البته نویسنده کنترل تشخیص داده که رویداد مهمتره) نمایش داده میشه تا شما کدهاتون رو درون اون قرار بدی.
حالا اگه با دابل کلیک رویداد مورد نظر شما نیومد ، خیلی سخته که با استفاده از دو تا لیست کشویی بالا رویداد موردنظرتون رو انتخاب کنید؟!!
شما هر کدی رو که دوست داری راحت توی رویداد Load فرمت بزار ، پنل این وسط چیکاره است؟؟
دوست من در مورد هدفت برام توضیح بده.
موفق باشی
Evil 69
سه شنبه 19 آذر 1387, 12:02 عصر
توی پنل تنزیمات در قسمت event ها برای رویداد پیشورز panl رویداد لود فرم رو بذار ببین میشه!!!؟
اگر کارت راه افتاد لطفا به ما هم بگو این به چه دردی می خوره وقتی میخایم بریم توی یک رویداد از یک شی خوب اونو انتخاب می کنیم و می ریم اون تو
( نکنه تو هم رشته کامپوتر می خونی ها !!!!)
combo_ci
سه شنبه 19 آذر 1387, 23:03 عصر
( نکنه تو هم رشته کامپوتر می خونی ها !!!!)
آره ..يعني ميخوندم ... سه چهار ساله كه تموميده :لبخندساده:
در مورد هدف از كار :
من به درست كردن theme هاي متفاوت از برنامه هاي ويندوزي براي برنامهام خيلي علاقه دارم...يه theme جديد ساختم كه توش به اين مشكل خوردم نمونه اوليش رو ميزارم ببينين
اگه برنامه رو اجرا كنين مشاهده ميكنين كه فرمي كه روش panel نيست وقتي TransparencyKey رو set ميكنيم (تا كنج هاي صفحه داراي حالت انحنا بشه ) پشت صفحه هم معللوم ميشه ...براي حل اين مشكل من يك panel رو فرم انداختم و در واقع همه control ها رو روي اووون ميندازم....مشكل اينجاست كه وقتي اين theme رو dll كنيم و توي برنامه ديگه استفاده كنيم طبق عادت وقتي رو فرم double كليك ميكنم تا به رويداد load فرم دسترسي داشته باشيم به رويداد paint از panel ميريم و براي براي رويداد form load بايد از منو يه بار فرم رو انتخاب بعد رويداد load رو انتخاب كنيم
حالا از اساتيد كسي ميدونه اين كارو چطوري ميشه انجام داد يعني رو panel در designer كه دابل كليك شد رويداد load فرم بياد كه برنامه نويس وجود panel رو حس نكنه؟
mostafaaa
چهارشنبه 20 آذر 1387, 09:48 صبح
سلام دوست من ،
اگه از اول میگفتی چیکار میخای بکنی اینقدر دردسر نمیکشیدی.
در هر صورت شما برای رسیدن به مقصودتون (داشتن یه تم که کنجهاش هم دارای انحنا باشه) اصلا نیازی به استفاده از Panel نداری!!
شما رنگ فرمت رو یه رنگی بجز رنگ Default فرم انتخاب کن (مثلا قرمز) بعد توی قسمت TransparencyKey همون رنگ رو انتخاب کن(قرمز) رنگ تمی هم که داری قرار میده فقط قرمز نباشه.
حالا توی نتیجه همه رنگها رو داری الا قرمز که Transparent شده.
اگه منظورم رو متوجه نشدی بگو تا واسط یه سورس بزارم.
combo_ci
چهارشنبه 20 آذر 1387, 23:37 عصر
استاد گرامي آقا ایمان عزيز
اگه نمونه كدي كه گزاشتم رو اجرا ميكردي ميديدي من روي فرم base دقيقا اين كارو كردم البته با رنگ سفيد ....و وقتي فرم لودميشه كاملا پشتش ديده ميشه....من براي حل اين مشكل بود كه اووون panel رو رو فرم گزاشتم....
حالا اگه زحمتي نيست سورسي كه اين مشكلو حل كرده برام بزاري ممنون ميشم
mostafaaa
پنج شنبه 21 آذر 1387, 22:09 عصر
سلام دوست من
و وقتي فرم لودميشه كاملا پشتش ديده ميشه
خوب معلومه برادر
شما اگه توجه کرده باشی وقتی پنل رو برمیداری عکسهای رو که به عنوان Title و Border توی فرمت گزاشتی دیده میشه ولی وسطش دیده نمیشه. نکته کلیدی اینه که اگه عکست همرنگ با رنگی که Transparentشده، نباشه عکست دیده میشه. حالا شما به جای اینکه اون وسط یه پنل بزاری و برای Border و Title فرمت از PictureBox استفاده کنی از خاصیت BackGroundImage فرمت استفاده کن و یه عکس که همه اینا رو با هم داره قرار بده.
علت اینکه برات سورس نزاشتم اینه که من از VS2008 استفاده میکنم و شما از 2005 و احتمالا نتونید سورس رو باز کنید.
mostafaaa
پنج شنبه 21 آذر 1387, 22:16 عصر
دوباره سلام
اینم ببینی بد نیست
http://barnamenevis.org/forum/showthread.php?t=6157
combo_ci
جمعه 22 آذر 1387, 00:21 صبح
یه عکس که همه اینا رو با هم داره قرار بده.
اين كار موقع بزرگ يا كوچك كردن فرم هايي كه از اين فرم ارث بردن ناهماههنگي تو نمايش فرم ايجاد ميكنه چون در واقع وقتي فرم بزرگ بشه اجبارا" بايد stresh بشه تا همه فرم رو بپوشونه....!
من 2008 هم كد ميزنم ....اگه ميشه يه سورس بزار ...شايد حل شه...ممنون
mostafaaa
جمعه 22 آذر 1387, 18:57 عصر
http://www.codeproject.com/KB/vb/Skin_for_Form_in_VB.Net.aspx
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.