PDA

View Full Version : یه سوال در رابطه با کامپوننت نویسی



Chabok
یک شنبه 23 بهمن 1384, 17:31 عصر
با سلام خدمت دوستان محترم
خواهشا اگه آقایون مدیر اسم بهتری برای این تاپیک در نظر دارند اسم رو عوض کنند .(ممنون) :چشمک:
راستش من اخیراً شروع کردم کامپوننت نویسی (مبتدی)
و فعلا یه مشکل دارم .
توی کامپوننت یه سری متغیر دارم که بصورت Public تعریف شده .
حالا می خواهم وقتی که توی Toolbox اضافه شد و روی فرم قرار داده شد بشه متغیرهایی رو که میخواهیم
از پنجره Properties بشه تغییرشون داد . چون فعلا فقط از بخش کد نویسی میشه این کارو کرد .
و یه سوال دیگه اینکه میشه Icon کلاس ها (کامپوننت DLL) را وقتی که توی Toolbox هست عوض کرد .
ممنونم .:لبخند:

Mehrafrooz
یک شنبه 23 بهمن 1384, 23:46 عصر
دوست عزیز یه نگاهی به این بنداز . از سایت www.codeproject.com دانلود کردم . البته به زبان C# ولی نگاه کنی خودت متوجه می شی
2373

Chabok
دوشنبه 24 بهمن 1384, 14:18 عصر
راستش من کلاً زبان های خانواده C رو بلد نیستم .(خیلی خیلی کم)
و نمیدونم این مثال شما راجع به متغیرهای در پنجره Properties است یا قرار دادن آیکون .
ولی ممنونم . سعی میکنم یه چیزی ازش بفهمم .

habedijoo
دوشنبه 24 بهمن 1384, 14:38 عصر
سلام

جواب اول :
فقط خواص یا پروپرتی ها هستند که در پنجره Property ظاهر می شوند . اگر میخواهی یک متغییر رو در دسترس قرار بدی باید برای اون Property بنویسی . ( امیدوارم که منظورم را گرفته باشی )


Private _a As String = "Default"
Public Property a() As String
Get
Return _a
End Get
Set(ByVal value As String)
_a = value
End Set
End Property


جواب دوم :
خصوصیتهای کنترلها و Property ها با Attribute تنظیم میشود. خیلی راحت . یکی از این Attribute ها برای تغییر آیکون کنترل مورد نظر است .

اگر آیکون مورد نظر یکی از آیکونهای کنترلهای موجود باشد


<ToolboxBitmap(GetType(System.Windows.Forms.TextBox ))>_
Public Class TrafficLight


اگر آیکون مورد نظر از روی هارد باشد .


<ToolboxBitmap(“C:\TestData\RedLightIcon.bmp”)> _
Public Class TrafficLight

Chabok
سه شنبه 25 بهمن 1384, 09:37 صبح
با عرض تشکر خیلی زیاد از آقای هدایت عابدی جو .

یه چند تا سوال دیگه هم برام پیش اومد گفتم همین جا مطرح کنم .

سوال 1 :
چجوری میشه این Property هایی که میسازیم رو دسته بندی کنیم ؟!!!

آخه همشون توی بخش Properties در زیر شاخه Misc قرار می گیرند .
ممنونم کمک کنید .

سوال 2 :
چجوری میشه یک Property رو نشه توی Propeties دید و فقط از کد نویسی بهش دسترسی داشت ؟!!!
بازم ممنونم

سوال 3 :
راستی آقای هدایت . میشه اون بخشی رو که تصویر یا همون ToolBoxBitmap اضافه میکنه یه مثال کوچیک بفرستین .
آخه رو سیستم من Error میده . یعنی قبول نمیکنه . ممنونم

یه سوال کوچیک دیگه (سوال 4) :
چجوری به یه Property توضیحات اضافه می کنند که در پایین بخش Properties نشون میده ؟

خیلی از همگی ممنونم .

مطهر
جمعه 28 بهمن 1384, 13:57 عصر
سوال 2 :
چجوری میشه یک Property رو نشه توی Propeties دید و فقط از کد نویسی بهش دسترسی داشت ؟!!!

<Browsable(False)> _
Public Property MyProperty() As Integer
Get
' Insert code here.
Return 0
End Get
Set
' Insert code here.
End Set
End Property


چجوری به یه Property توضیحات اضافه می کنند که در پایین بخش Properties نشون میده ؟


<Description("The image associated with the control"), _
Category("Appearance")> _
Public Property MyImage() As Image
Get
' Insert code here.
Return image1
End Get
Set
' Insert code here.
End Set
End Property

چجوری میشه این Property هایی که میسازیم رو دسته بندی کنیم ؟!!!

آخه همشون توی بخش Properties در زیر شاخه Misc قرار می گیرند


<Description("The image associated with the control"), _
Category("Appearance")> _
Public Property MyImage() As Image

Get
' Insert code here.
Return image1
End Get
Set
' Insert code here.
End Set
End Property

مطهر
جمعه 28 بهمن 1384, 20:14 عصر
ظاهراً شما دوست گرامی دارید با کامپوننت ها سرو کله می زنید. به نظر من کامپوننت نویسی استخونای برنامه نویس را محکم می کنه . اگر مایل باشد یه تاپیک بزنیم و در مورد نکات این مهم تبادل نظر کنیم.یا به سورس های موجود را بررسی کنیم
موفق باشید

Chabok
شنبه 27 اسفند 1384, 20:08 عصر
با عرض سلام و خسته نباشید و تبریک سال نو خدمت برنامه نویسان عزیز
این سوال رو در ادامه همین تاپیک زدم . ولی اگه کسی جواب نده مجبورم تو یه پست جدید مطرح کنم :لبخند: .
ببینید مثلا من یه کلاس نوشتم که از یه کامپوننت به ارث رسیده (مثلا Panel)


Public Class MyClass
Inherits System.Windows.Forms.Panel
حالا چجوری میشه یه سری از خواصی را که مربوط Panel میشه رو حذف کرد ؟
برای مثال خاصیت BackColor را ازش حذف کنیم .

یا در کل چجوری میشه خواص عمومی را از کنترل های به ارث رسیده حذف کرد .


Public Class MyClass
Inherits System.Windows.Forms.Control

خیلی خیلی ممنون میشم راهنمایی کنید .:چشمک:

taherbaghal
یک شنبه 28 اسفند 1384, 08:22 صبح
سلام به نظر من یه تاپیکبزنید و ابتدای اون کامپوننت نویسی روتوضیح بدین و یه کم بیشتر دربارش بگید چون کسی که در کامپوننت نویسی تازه وارده خیلی از مسائل رو نمیدونه و اگر اول تاپیک اینا مشخص بشن بهتره و موارد بعدی به راحتی برای همه قابل فهمه
اگر کسانی که کامپوننت نویسن این کار رو انجام بدن ممنون میشم

Chabok
یک شنبه 28 اسفند 1384, 18:18 عصر
راستش من هم خودم تازه واردم و اگه من این کارو بکنم همه انتظار دارند که من پاسخ سوالاتشونو بدم که از عهده من خارج است . چون خودم تازه دارم تاتی تاتی می کنم .

فکر کنم اگه یکی از دوستان دیگه این کارو بکنند بهتر باشه . موفق و پیروز باشید

bashir_nashi
جمعه 04 فروردین 1385, 11:02 صبح
سلام به دوستان
من یه سوال در مورد نوشتن کامپوننت داشتم و چون دیدم اساتید اینجا جمعند اونو اینجا مطرح می کنم.
طریقه ایجاد Property مرکب . مثل size در اکثر کامپوننتهای استاندارد که خودش از height , width تشکیل شده .
ممنون

mamadgmail
شنبه 05 فروردین 1385, 02:35 صبح
سلام به دوستان
من یه سوال در مورد نوشتن کامپوننت داشتم و چون دیدم اساتید اینجا جمعند اونو اینجا مطرح می کنم.
طریقه ایجاد Property مرکب . مثل size در اکثر کامپوننتهای استاندارد که خودش از height , width تشکیل شده .
ممنون
دوست عزیر لازم نیست کار خاصی انجام بدید فقط کافی اگه مثلا می خوان سایز کنتر رو جر property ها قرار بدید یک property از نوع Size درست کنید.بقیه کار ها رو خود VS انجام می ده.
زمانی که شما کنترل رو Drag می کنید توی فرم property که شما تعریف کنارش یک علامت + می آید که اگه بازش کنید در این مثال خاص width و height رو بهتون نشون می ده(در واقع بعد از این که شما + رو می زنید property های کلاس Size نشون داده می شن). امیدوارم منظورمو درست رسونده باشم. در ضمن سایت http://www.c-sharpcorner.com رو آقای زواری در بخش سی شارپ معرفی کردن هر چند راجب سی شارپ است ولی من دیدم که مقالاتی در مورد Custom Control هم داره.گفتم شاید بد نباشه که اینجا هم معرفی بشه.
خوش باشید

bashir_nashi
شنبه 05 فروردین 1385, 16:37 عصر
سلام
من size رو بعنوان نمونه گفتم البته امتحان نکردم چیزی که شما گفتید در مورد سایز انجام میشه یا نه ولی پراپرتی که من می خوام کاملا custom است و فکر نکنم خود vs بدونه اجزاش چیند !!!

mamadgmail
شنبه 05 فروردین 1385, 18:21 عصر
احتمالا من نتونستم منظورمو درست بگم ببنید فرض کنید شما یک کلاسی می نویسید به اسم Image که حالا یک سری Property داره. بعد از این کلاس در یک Custom Control استفاده میکنین به این شکل که یک Proprty از نوع کلاس Image که قبلا خودتون نوشتینش تعریف می کنید. حالا زمانی که کنترل رو به فرمتون اضافه می کنید اون Proprty که از نوع Image است خودش شامل یک سری Property هستش که با زدن + نشون داده می شن.شما یک باز تست کنید حتما متوجه می شید. امیدوارم اینبار منظورمو درست رسونده باشم.
خوش باشید

صابر
یک شنبه 06 فروردین 1385, 04:33 صبح
یک مثال:


Public Class CSize
Private _x, _y As Integer
Public Property X() As Integer
Get
Return _x
End Get
Set(ByVal value As Integer)
_x = value
End Set
End Property
Public Property Y() As Integer
Get
Return _y
End Get
Set(ByVal value As Integer)
_y = value
End Set
End Property
Public Overrides Function ToString() As String
Return "X=" & _x & " Y=" & _y
End Function
End Class
Public Class CImage
Private _size As New CSize
Sub New()
_size.X = 0
_size.Y = 0
End Sub
Sub New(ByVal x As Integer, ByVal y As Integer)
_size.X = x
_size.Y = y
End Sub
Public Property Size() As CSize
Get
Return _size
End Get
Set(ByVal value As CSize)
_size = value
End Set
End Property
End Class


و این هم نحوه کاربرد:


Dim t As New CImage
t.Size.X = 10
t.Size.Y = 20
MsgBox("t: " & t.Size.ToString)

Dim t2 As New CImage(25, 100)
MsgBox("t2: " & t2.Size.ToString)

Dim mySize As New CSize
mySize.X = 500
mySize.Y = 700

Dim t3 As New CImage
t3.Size = mySize
MsgBox("t3: " & t3.Size.ToString)

coder
یک شنبه 06 فروردین 1385, 11:40 صبح
دوستان سلام و سال نو مبارک:قلب:
اولا اون تاپیکی که برای کامپوننت نویسی پیشنهاد شده خیلی لازمه ولی نیاز به ایجادش نیست چون تا همینجا هم این تاپیک خیلی پر باره و میتونه ادامه پیدا کنه. فقط میمونه اینکه تاپیک رو بعنوان گفتگوی مهم بزارند اول تالار
ثانیا من هم یه سوالم رو ( که قبلا مطرح و جواب نگرفتم ) تکرار میکنم
یه کامپوننت نوشتم که بشکل گرافیکی هست و با تغییر خواصش ظاهرش عوض میشه ( با استفاده از دستورات رسم خط و دایره و .. ) برای اینکه رنگ کامپوننت بصورت شفاف روی فرم دیده بشه باید رنگ پس زمینه کامپوننت با فرم یکی بشه
قبل از رسم خطوط :
Dim G As Graphics = Me.CreateGraphics
G.Clear(Me.BackColor)
ولی مسئله اینه که پس زمینه همیشه فرم خالی نیست و ممکنه کامپوننت روی یه تصویر یا نوشته باشه. حالا چه جوری به کامپوننت بگیم که عکس پس زمینه شو بداخل خودش کپی کنه؟ این کار باعث میشه کامپوننت مثل آیکونهای دسک تاپ شفاف دیده بشه:متفکر:

Parham.G
یک شنبه 06 فروردین 1385, 13:06 عصر
دوستان سلام و سال نو مبارک:قلب:
اولا اون تاپیکی که برای کامپوننت نویسی پیشنهاد شده خیلی لازمه ولی نیاز به ایجادش نیست چون تا همینجا هم این تاپیک خیلی پر باره و میتونه ادامه پیدا کنه. فقط میمونه اینکه تاپیک رو بعنوان گفتگوی مهم بزارند اول تالار
ثانیا من هم یه سوالم رو ( که قبلا مطرح و جواب نگرفتم ) تکرار میکنم
یه کامپوننت نوشتم که بشکل گرافیکی هست و با تغییر خواصش ظاهرش عوض میشه ( با استفاده از دستورات رسم خط و دایره و .. ) برای اینکه رنگ کامپوننت بصورت شفاف روی فرم دیده بشه باید رنگ پس زمینه کامپوننت با فرم یکی بشه
قبل از رسم خطوط :
Dim G As Graphics = Me.CreateGraphics
G.Clear(Me.BackColor)
ولی مسئله اینه که پس زمینه همیشه فرم خالی نیست و ممکنه کامپوننت روی یه تصویر یا نوشته باشه. حالا چه جوری به کامپوننت بگیم که عکس پس زمینه شو بداخل خودش کپی کنه؟ این کار باعث میشه کامپوننت مثل آیکونهای دسک تاپ شفاف دیده بشه:متفکر:
این یکی از مواردی است که به نظر من یک ضعف نسبت به وی بی کلاسیک هست. متاسفانه در دات نت شفافیت بک گراند یک کنترل فقط نسبت به رنگ و یا تصویر بک گراند Container اون کنترل هست. و نه کنترلهای دیگری که در پشت این کنترل قراردارند.

m-heidari
چهارشنبه 09 فروردین 1385, 02:19 صبح
من فکر میکنم مشکل شما با Transparent حل بشه اگه شما BackColor یک کنترل رو با رنگ Transparent برابر کنید و خاصیت BackColor
Container رو هم Transparent بکنید این ضعفی که میفرمایید حل میشه.... به نظر من VS.Net و در کل Dot Net هیچ ضعفی نسبت به زبانهای دیگه نداره.

در ضمن Transparent در قسمت WebColors قرار داره و اولین Item هست

رضا عربلو
یک شنبه 20 فروردین 1385, 20:22 عصر
چگونه می توان مقدار دیفلت یک پراپرتی را تغییر داد؟

mamadgmail
یک شنبه 20 فروردین 1385, 23:13 عصر
برای تغییر این مقدار defult کامپوننت خوب فکر می کنم توی سازنده این کار رو بشه انجام داد اما در مورد اینکه یکی از پراپرتی های کامپوننت های خود VS رو کاری کنیم که نشون نده فکر می کنم باید اون پراپرتی اجازه override شده رو داشته باشه اگه بشه override کردش خوب می شه browsable اون رو false کرد.

بابک زواری
یک شنبه 20 فروردین 1385, 23:23 عصر
دوستان اگر همین جا به سوالات مطرح شده جواب بدید یک تاپیک خوب در میاد که گفتگوی مهمش میکنیم

taherbaghal
دوشنبه 21 فروردین 1385, 01:26 صبح
خیلی خوبه
اینجوری یه جورایی آموزش هم داده میشه
ممنون

bashir_nashi
جمعه 25 فروردین 1385, 18:15 عصر
من یه پراپرتی reedonly برای کامپوننتن گذاشتم ولی هنگام استفاده در پنجره properties اونو غیر فعال نشون می ده و از داخل کد می شه اونو تغییر داد.
com : نام کامپوننت
pro : نام پراپرتی رید انلی
می خوام نشه نوشت
com.pro=12

صابر
جمعه 25 فروردین 1385, 19:14 عصر
اون پراپرتی که نوشتی اینجا بذار ببینیم چطور نوشتی... قاعدتاً وقتی ReadOnly باشه نباید بشه..

رضا عربلو
جمعه 25 فروردین 1385, 21:31 عصر
برای تغییر مقدار default یک پراپرتی ان پراپرتی را override کردم و در ان مقدار جدید را تعریف کردم ولی به نطر من این کار چندان درست نیست.

رضا عربلو
جمعه 25 فروردین 1385, 21:35 عصر
منظور من از مقدار دیفلت کامپاننت ان است که هنگامی که کامپاننت را بر روی فرم می گذارید در کدتان مقدار کام&#247;اننت ثبت نشود.
اگر در constructor این کار را بکنیم در کد design تان دستور تغییر مقدار پرلپرتی ثبت می شود.

mamadgmail
جمعه 25 فروردین 1385, 21:42 عصر
اقای عربلو ببخشید من متوجه نشدم منظورتون چیه می شه بیشتر توضیح بدید؟؟

bashir_nashi
سه شنبه 29 فروردین 1385, 18:11 عصر
اون پراپرتی که نوشتی اینجا بذار ببینیم چطور نوشتی... قاعدتاً وقتی ReadOnly باشه نباید بشه..


سلام به دوستان
پراپرتی readonly من اینه
ولی هنگام استفاده در کد برنامه می شه به اون مقدار داد.




<System.ComponentModel.ReadOnly(True)> <System.ComponentModel.Category("Format")> Public Property Pprice() As Long
Get
Return _pp
End Get
Set(ByVal value As Long)
_pp = value
' ma.Text = _pp
End Set
End Property

bashir_nashi
سه شنبه 29 فروردین 1385, 18:15 عصر
من یه کامپوننت ماشین حساب بر ای استفاده در برنامه هام نوشتم
نمی دونم معادل keypreview که از خواص فرمه در هنگام نوشتن کامپوننت چیه
یعنی فعلا برای استفاده از این ماشین حساب حتما باید با ماوس کلید ها رو کلیک کنی و نمی شه از کی برد استفاده کرد

mamadgmail
سه شنبه 29 فروردین 1385, 23:01 عصر
سلام به دوستان
پراپرتی readonly من اینه
ولی هنگام استفاده در کد برنامه می شه به اون مقدار داد.


دوست عزیز من زیاد به زبان Vb آشنایی ندارم ولی حداقل توی #C می دونم فقط در یک property
شما set رو می نویسید خوب این یعنی اینکه اجازه می دید که write هم بشه دیگه!!
حالا اگه من اشتباه می کنم لطفا دوستان راهنمایی کنن.

mamadgmail
چهارشنبه 30 فروردین 1385, 00:11 صبح
پست قبلیم رو تصحیح می کنم.من الان در #C تست کردم در صورتی که readonly تورو باشد حتی اگر set هم نوشته شود باز هم property خواندنی است.

صابر
چهارشنبه 30 فروردین 1385, 03:16 صبح
شما که می‌خواین این پراپرتی فقط خواندنی باشه نباید بلوک Set را تعریف کنید ...



<System.ComponentModel.Category("Format")> Public ReadOnly Property Pprice() As Long
Get
Return _pp
End Get
End Property

رضا عربلو
چهارشنبه 30 فروردین 1385, 04:15 صبح
برای مثال اگر در کانستراکتور کامپاننت مقدار پیش فرض backcolor را beige کردیم وقتی که کامپاننت را بر روی فرم می گذاریم در property explorer مقدار فوق به صورت بولد نمایش داده می شود و همچنین در کد برنامه تان دستور color = beige قرار داده میشود. ولی من می خواهم این کد همانند بسیاری از پراپرتی های پیش فرض دیگر نوشته نشود.

mamadgmail
چهارشنبه 30 فروردین 1385, 11:43 صبح
برای مثال اگر در کانستراکتور کامپاننت مقدار پیش فرض backcolor را beige کردیم وقتی که کامپاننت را بر روی فرم می گذاریم در property explorer مقدار فوق به صورت بولد نمایش داده می شود و همچنین در کد برنامه تان دستور color = beige قرار داده میشود. ولی من می خواهم این کد همانند بسیاری از پراپرتی های پیش فرض دیگر نوشته نشود.

خوب شما بلوک Set رو ننویس.

bashir_nashi
جمعه 01 اردیبهشت 1385, 12:11 عصر
من یه کامپوننت ماشین حساب بر ای استفاده در برنامه هام نوشتم
نمی دونم معادل keypreview که از خواص فرمه در هنگام نوشتن کامپوننت چیه
یعنی فعلا برای استفاده از این ماشین حساب حتما باید با ماوس کلید ها رو کلیک کنی و نمی شه از کی برد استفاده کرد
اگه ممکنه در این مورد هم راهنمایی کنین

bashir_nashi
جمعه 01 اردیبهشت 1385, 18:03 عصر
شما که می‌خواین این پراپرتی فقط خواندنی باشه نباید بلوک Set را تعریف کنید ...


کد:
<System.ComponentModel.Category("Format")> Public ReadOnly Property Pprice() As Long
Get
Return _pp
End Get
End Property


من از اشتباهی که قبلا می کردم شرمنده ام ولی با حل این مشکل , مشکل جدیدی برام پیش اومد
فرض کنید سه پراپرتی a,b,c داریم که c یک پراپرتی readonly است و بست هبه مقادیر a,b مقدار می گیرد. مثلا c=a+b
پس من در حال نوشتن کامپوننت باید پس از هربا تغییر مقدار a,b بتوانم c را مقدار دهی کنم ولی هنگام استفاده از این کامپوننت در برنامه نباید توانست مقدار c را مستقیما تغییر داد
ولی وقتبی من این پراپرتی را readonly میکنم داخل سورس خود کاموننت هم نمی شه مقدار c رو تغییر داد. پس در واقع بلا استفاده است................
امیدوارم منظورم رو درست بیان کرده باشم

mamadgmail
جمعه 01 اردیبهشت 1385, 23:05 عصر
تا اونجایی که من می دونم property ها برای فیلد های private کلاس هستن و درو واقع مکانیزمی هستن برای کنترل اونها شما زمانی که aوb رو با هم جمع می کنید در واقع یک فیلد private رو در کلاس تغییر می دید و c مقدار این فیلد رو بر می گرداند. و دلیل اینکه شما c رو readonly قرار می دید اینه که شما نمی خواید کاربر بتونه مستقیما اون رو تغییر بده و حتما باید روی aو b تاثیر بذاره تا c هم تغییر کنه. نمی دونم چقدر تونستم منظورمو برسونم.

خوش باشید.

صابر
شنبه 02 اردیبهشت 1385, 01:32 صبح
..فرض کنید سه پراپرتی a,b,c داریم که c یک پراپرتی readonly است و بست هبه مقادیر a,b مقدار می گیرد. مثلا c=a+b
...



Public Class test
Private _a, _b As Integer
Public Property A()
Get
Return _a
End Get
Set(ByVal value)
_a = value
End Set
End Property
Public Property B()
Get
Return _b
End Get
Set(ByVal value)
_b = value
End Set
End Property
ReadOnly Property C()
Get
Return _a + _b
End Get
End Property
End Class

bashir_nashi
شنبه 02 اردیبهشت 1385, 16:01 عصر
جناب آقای صابر
از راهنماییتون متشکرم . در واقع هر نوع تغییر مقدار یک پراپرتی readonly در همان تعریف پراپرتی باید باشد .
متشکر میشم اگه در مورد ماشین حساب هم راهنمایی کنین

صابر
یک شنبه 03 اردیبهشت 1385, 03:08 صبح
جناب آقای صابر
از راهنماییتون متشکرم . در واقع هر نوع تغییر مقدار یک پراپرتی readonly در همان تعریف پراپرتی باید باشد .
متشکر میشم اگه در مورد ماشین حساب هم راهنمایی کنین
خواهش میکنم.
در مورد ماشین حساب هم اگه منظورتون رو درست متوجه شده باشم. شما باید از رویداد OnKeyPress استفاده کنید.
با استفاده از یک Case و این رویداد میتونید بفهمید که کاربر چه کلیدی رو کلیک کرده و برای اون کلید یه کار خاص کنید.
مثلاً اگه کاربر کلید * را زد. در Case کلید * را PerfromClick کنید.

bashir_nashi
یک شنبه 03 اردیبهشت 1385, 15:30 عصر
خواهش میکنم.
در مورد ماشین حساب هم اگه منظورتون رو درست متوجه شده باشم. شما باید از رویداد OnKeyPress استفاده کنید.
.........

نه درست متوجه نشدید!!!
می دونم باید از چه کدی و چگونه استفاده کنم ولی مسئله اینه که OnKeyPress وقتی کار می کنه که فوکوس بر روی کنترل مربوط به اون باشه.
در حالت عادی اگه در OnKeyPress فرم این کد رو می نوشتیم و keyPreview فرم رو true می کردیم جواب می داد. ولی هنگام نوشتن کامپوننت keyPreview وجود ندارد و این به آن معناست که در رویداد OnKeyPress تمام کنترلها باید تست کلید فشرده شده را نوشت . چون ما نمیدانیم در هر لحظه فوکوس روی کدام کنترل است.
امیدوارم که منظورم رو بخوبی بیان کرده باشم

صابر
یک شنبه 03 اردیبهشت 1385, 15:55 عصر
آقای بیشیر،
متاسفم. من اطلاعاتی در این زمینه ندارم.
امیدوارم بقیه دوستان پاسخ بدن ما هم استفاده کنیم.

sohrab o
پنج شنبه 02 فروردین 1386, 10:29 صبح
بحث جالبی بود
اما یه منبع کامل می شه معرفی کنید ؟
من خیلی سوال دارم!

رضا عربلو
چهارشنبه 05 اردیبهشت 1386, 12:45 عصر
من می خواهم یک کامپاننت از textbox مشتق کنم که بطور پش فرض property رید اونلی ان true باشد ولی هنگامی که این کامژاننت را بر روی فرم می گذارم کد زیر را در designer فرم نبینید.

textbox1.readonly = true;

رضا عربلو
چهارشنبه 05 اردیبهشت 1386, 12:46 عصر
من می خواهم یک کامپاننت از textbox مشتق کنم که بطور پش فرض property رید اونلی ان true باشد ولی هنگامی که این کامژاننت را بر روی فرم می گذارم کد زیر را در designer فرم نبینید.

textbox1.readonly = true;

eshare
دوشنبه 14 تیر 1389, 18:36 عصر
نه درست متوجه نشدید!!!
می دونم باید از چه کدی و چگونه استفاده کنم ولی مسئله اینه که OnKeyPress وقتی کار می کنه که فوکوس بر روی کنترل مربوط به اون باشه.
در حالت عادی اگه در OnKeyPress فرم این کد رو می نوشتیم و keyPreview فرم رو true می کردیم جواب می داد. ولی هنگام نوشتن کامپوننت keyPreview وجود ندارد و این به آن معناست که در رویداد OnKeyPress تمام کنترلها باید تست کلید فشرده شده را نوشت . چون ما نمیدانیم در هر لحظه فوکوس روی کدام کنترل است.
امیدوارم که منظورم رو بخوبی بیان کرده باشم


Private Sub TextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_Babat.KeyPress, Me.Keypress,Textbox2.Keypress
و بقيه كنترلها به همين ترتيب

iman_me
سه شنبه 15 تیر 1389, 23:35 عصر
ای بابا نمی دونم شما چقدر علاقه دارید سوال های سه سال پیش رو جواب بدید شما میدونید:متعجب: :متعجب: :متفکر: :متفکر::متفکر::متفکر: :متفکر::متفکر: :متعجب: :متعجب: