PDA

View Full Version : سوال: CreateParams ؟ چیست و گرفتن دیتا در حالت طراحی



Alirezanet
پنج شنبه 08 تیر 1391, 22:34 عصر
CreateParams() As System.Windows.Forms.CreateParams

1- جدیدا چند تکه کد کاربردی دیدم توی سایت که از این پروپرتی استفاده میکنه و Override میکنند و یکسری عملیات رو توش انجام میدن !

فقط میخواستم بدونم این پروپرتی دقیقا کارش چیه و مختص به حالت طراحی میشه یا RunTime ? و در نهایت چه استتفاده هایی میشه ازش کرد .

یه سوال دیگه هم داشتم گفتم شاید اساتید جواب بدن :؟

2- اگه بخوایم در DesignMode یک کنترل , دیتا از جایی دریافت کنیم (از دیتابیس یا فایل یا ... ) و توی کنترل نمایش بدیم راهش چیه ! ؟
یکسری از کامپوننت ها این کار رو میکنند !

با تشکر

the king
جمعه 09 تیر 1391, 23:56 عصر
CreateParams() As System.Windows.Forms.CreateParams

1- جدیدا چند تکه کد کاربردی دیدم توی سایت که از این پروپرتی استفاده میکنه و Override میکنند و یکسری عملیات رو توش انجام میدن !

فقط میخواستم بدونم این پروپرتی دقیقا کارش چیه و مختص به حالت طراحی میشه یا RunTime ? و در نهایت چه استتفاده هایی میشه ازش کرد .

ساختن هر کنترل نمایشی ای معمولا با ساختن یک پنجره شروع میشه، نه فقط فرم ها، حتی اجزاء کوچکی مثل دکمه ها هم این پنجره رو دارند.
پنجره های ویندوز یکسری مشخصات مشترک عمومی دارند که موقع ساختن پنجره باید مشخص بشه. CreateParams موقع ساختن یک
پنجره فراخوانی میشه تا مشخصات اش رو تعیین کنه. حالا اگر یک برنامه نویسی بخواهد خیلی دقیق روی جزئیات پنجره کنترل داشته باشه
CreateParams رو override می کنه تا پنجره دقیقا با مشخصات دلخواه اش ایجاد بشه.



یه سوال دیگه هم داشتم گفتم شاید اساتید جواب بدن :؟
2- اگه بخوایم در DesignMode یک کنترل , دیتا از جایی دریافت کنیم (از دیتابیس یا فایل یا ... ) و توی کنترل نمایش بدیم راهش چیه ! ؟
یکسری از کامپوننت ها این کار رو میکنند !

با تشکر

فرقی چندانی نمی کنه، حتی زمانی که در حالت DesignMode کنترلی رو طراحی می کنید کد های هم اون کنترل اجرا می شوند و نسبت به رخداد ها
واکنش نشون میده، فرضا این UserControl رو می سازید، از همون لحظه ای که روی فرم قرار اش بدهید و روی فرم جابجایش کنید تغییر در Layout باعث
اجرا شدن کدی میشه که در OnLayout نوشته اید، حالا می توانید در این رخداد از جایی اطلاعاتی بخوانید و بنویسید.


Public Class UserControl1

Private n As Integer

Protected Overrides Sub OnLayout(ByVal e As System.Windows.Forms.LayoutEventArgs)
n += 1
MyBase.OnLayout(e)
End Sub

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
e.Graphics.DrawString(n.ToString(), Font, Brushes.Black, 3, 3)
End Sub

End Class

Alirezanet
شنبه 10 تیر 1391, 01:59 صبح
سلام
در مورد توضیح سوال اولم ازتون ممنونم که یک مقدار مساله رو روشن کرد !
ولی در مورد دومی امکان انجام این کار نیست !
شما تست کنید ! مثلا وصل شید در حالت طراحی به دیتابیس و 1 رکورد رو بخونید و در یک lbl نمایش بدید ! این کار اررور میده !