PDA

View Full Version : دیتاگرید ویو سفارشی



elnazii
چهارشنبه 13 بهمن 1389, 12:06 عصر
با سلام خدمت تمامی دوستان و اساتید.
همونطور که می دونید datagridview خود ویژوال همیشه نیاز به یه سری تغییر در style داره تا چیزی بشه که مورد پسند قرار بگیره.( مثل تغییر رنگ و ..)
من می خوام یک datagridview ای بسازم که تمامی تغییراتم رو توش اعمال کنم و همیشه از اون استفاده کنم و مجبور نشم همیشه کارهای تکراری رو انجام بدم.
خواستم usercontrol بسازم اما اون موقع خاصیت های قبلی dg از بین میره.یعنی نمیتونم در پروژه های دیگه ستون ها رو تغییر بدم و ...
به نظرتون استفاده از ماکرو چطوره؟ اگه جواب میده لطف کنید بگید چطوری یک ماکرو ایجاد و تو پروژه های دیگه استفاده اش کنم؟

elnazii
چهارشنبه 13 بهمن 1389, 12:10 عصر
سوال بعدی من هم در این زمینه هست این که من می خواهم یه فرم سفارشی بسازم. مشکلم اینه که چطور کنترل فرم رو بیارم بندازم تو پروژه که بعد هم تغییرات رو اعمال کنم و کامپوننت یا dll تولید کنم؟

DoDoklak
چهارشنبه 13 بهمن 1389, 16:09 عصر
ساخت کنترل دیتا گرید سفارسی با تمام امکانات به این راحتی ها نیست.نمیشه این همه کار رو با چند خط توضیح داد
اگر توجه کرده باشید شرکت های سازنده کامپونینت برای ساخت این نوع کنترل ها پول نسبتا زیادی میگیرند چون کار زیادی برای طراحی داره.
به نظر من از کامپونینت های آماده استفاده کنید بهتره

alimanam
چهارشنبه 13 بهمن 1389, 20:25 عصر
با سلام

برای این منظور شما یه پروژه جدید ایجاد کنید از نوع ( Class Library ) بعد رفرنس System.Windows.Forms رو به لیست رفرنس های پروژه اضافه کنید بعد کلاس رو به یه کنترل مثل کنترل مورد نظر که دیتاگرید ویو هست نسبت بدین تا ازش به ارث ببره یعنی اینجوری :

Public Class myDataGridView
Inherits System.Windows.Forms.DataGridView

End Class


حالا هر نوع تغییری در خصوصیات یا ویژگیهای کنترل میخواین بدین بنویسین ( حتماً بلدین دیگه ) اگه ویژگی جدیدی لازم دارین به این کنترل جدید اضافه کنید در آخر هم اون رو کامپایل کنید و به راحتی هرچه تمام تر میتونین ازش استفاده کنید .


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

دوست عزیز لازم نیست که همه امکانات رو خودمون طراحی کنیم پس بحث ارث در اشیاء رو مایکروسافت واسه چی طراحی کرده ؟ ! :متفکر: شما با یه قطعه کد کوچولو میتونین کل ویژگیهای کنترل رو به کلاس نسبت بدین بعد اون کلاس ساده میشه یه کنترل پیشرفته مثل گرید ویو به همین راحتی حالا با Overrides کردن ویژگیهای اون کنترل ویژگی مورد نظر رو ایجاد کرد . موفق باشین .

elnazii
پنج شنبه 14 بهمن 1389, 09:13 صبح
با سلام

برای این منظور شما یه پروژه جدید ایجاد کنید از نوع ( Class Library ) بعد رفرنس System.Windows.Forms رو به لیست رفرنس های پروژه اضافه کنید بعد کلاس رو به یه کنترل مثل کنترل مورد نظر که دیتاگرید ویو هست نسبت بدین تا ازش به ارث ببره یعنی اینجوری :

Public Class myDataGridView
Inherits System.Windows.Forms.DataGridView

End Class



.

ممنون از کمکتون اما برای من این خطا رو می گیره :
http://www.uploadtak.com/images/lm9cuw8p4pv9tm5hzmqg.jpg

add refrence هم کردم.

elnazii
پنج شنبه 14 بهمن 1389, 09:17 صبح
ممنون از کمکتون اما برای من این خطا رو می گیره :
http://www.uploadtak.com/images/lm9cuw8p4pv9tm5hzmqg.jpg

add refrence هم کردم.


فهمیدم مشکل کجاست. من پروژه رو از نوع دیگه ای ایجاد می کردم.
حالا این خطا رفع شد اما این class library که view Design نداره!! چطور دیتاگرید ویو ایجاد کنم ؟ با کد نویسی چطور می تونم انجام بدم؟

alimanam
پنج شنبه 14 بهمن 1389, 11:20 صبح
view Design نداره!!خوب نداشته باشه !!! قرار نیستم داشته باشه باید با کد نویسی تنها اون تغییراتی که مدنظرشماست رو واسش بنویسین و کامپایل کنید نتیجه کار یه کنترل جدیده که از کنترل پدر که در اینجا دیتاگرید ویو هست به ارث رسیده + ویژگیهایی که شما با کد نویسی براش تعریف یا تغییر دادین همین .


چطور دیتاگرید ویو ایجاد کنم ؟ عجب !!! شما با همون کد بالایی که در پست اول بهتون دادم یه دیتاگرید ویو دارین دیگه !!! وقتی کد Inherits System.Windows.Forms.DataGridView مینویسین وکامپایل کنین کنترل ساخته میشه . حالا اون تغییراتی که میخواین رو با کد نویسی واسش ایجاد میکنین و با هربار کامپایل اون تغییرات در کنترل سفارشی شما ساخته میشه بعد هم نتیجه کار که یه فایل dll هست رو میتونین در هرپروژه ایی به جعبه ابزار ویژوال استودیو Add کنین و استفاده کنین .


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


همونطور که می دونید datagridview خود ویژوال همیشه نیاز به یه سری تغییر در style داره تا چیزی بشه که مورد پسند قرار بگیره.( مثل تغییر رنگ و ..)
من می خوام یک datagridview ای بسازم که تمامی تغییراتم رو توش اعمال کنم و همیشه از اون استفاده کنم و مجبور نشم همیشه کارهای تکراری رو انجام بدم.شما سوال خودتون رو در پست اول بخونین بعد متناسب با همون سوال انتظار پاسخ داشته باشین به نظر من جواب کامل گرفتین . قرار نیست من یا کسی بیاد واستون یه کنترل به دلخواه شما طراحی کنه که !!! اگرم بنویسه واقعاً لطف میکنه و جای تشکر بسیارداره که وقت میزاره شما خودتون هم باید کمی آستین مبارک رو بالا بزنین دیگه :اشتباه:

خوب اینم یه لینک خوب (http://www.codeproject.com/KB/grid/DGVCustomHdr.aspx)که فکر میکنم میتونه تا اندازه ایی بهتون کمک کنه کدهاش که ساده است و قابل فهم . موفق باشید .

elnazii
پنج شنبه 14 بهمن 1389, 12:58 عصر
کد های من همش همینه :




Public Class Class1
Inherits System.Windows.Forms.Button



Private Sub InitializeComponent()
Me.SuspendLayout()
'
'Class1
'
Me.FlatStyle = System.Windows.Forms.FlatStyle.Popup
Me.ForeColor = System.Drawing.Color.Red
Me.ResumeLayout(False)

End Sub
End Class






درسته؟ اگه درسته پس چرا وقتی توی پروژه دیگه ای ازش استفاده می کنم فقط یه button معمولی دارم؟

alimanam
پنج شنبه 14 بهمن 1389, 16:58 عصر
با سلام


درسته؟ اگه درسته پس چرا وقتی توی پروژه دیگه ای ازش استفاده می کنم فقط یه button معمولی دارم؟ اولاً که بازم به نظر میاد نوع پروژه رو درست انتخاب نکردین !!! :متفکر: دوماً کدهاتون رو در رویداد مناسبی ننوشتین :متعجب: باید در رویداد New کلاس مینوشتین یعنی اینجوری میشه :


Public Class Class1

Inherits System.Windows.Forms.Button

Public Sub New()
Me.FlatStyle = System.Windows.Forms.FlatStyle.Popup
Me.ForeColor = System.Drawing.Color.Red
End Sub

End Class
راستی اگه دنبال یه سورس توپ واسه کنترل Bottun میگردین که نکات آموزشی زیادی داره این لینک (http://www.codeproject.com/KB/buttons/CButton.aspx) یکیشه . موفق باشید .

nowar1352
یک شنبه 02 مرداد 1390, 00:36 صبح
با تشكر سلام دوست عزيز آيا تمپليت هاي آماده براي DatagridView وجود داره يا نه .براي من بيشتر رنگ آميزي آن مهم است