PDA

View Full Version : مشکل True شدن AutoSize در بعضی کنترلها



Reza_Shamayel
شنبه 12 آبان 1386, 20:19 عصر
با سلام و خسته نباشید خدمت همه عزیزان...

بنده یک مشکلی با AutoSize بعضی کنترلها به شرح زیر دارم:

چرا وقتیکه یک کنترل CheckBox رو (از ToolBox) داخل فرم قرار میدم، بطور اتوماتیک مقدار True در AutoSize اون قرار میگیره ولی برای مثال وقتی کنترل Button رو در فرم قرار میدم، مقدار False (که مقدار پیش فرض هر دو کنترله) در AutoSize دیده میشه؟

ضمنا در صورت امکان، آیا کسی میتونه یه کنترل جدید که از CheckBox مشتق شده باشه رو برام برنامه نویسی کنه به شرطی که به محض قرار دادن آن در فرم (از ToolBox) مقادیر بصورت زیر تنظیم شده باشند:
AutoSize = False
Size = 120; 21
RightToLeft = True

لازم به ذکره که بنده با VB.NET 2005 Professional Edition کار میکنم.

amirsajjadi
شنبه 12 آبان 1386, 22:35 عصر
با سلام
این سورس کامپوننت رو توی پروژت Add کن (Project Menu -> Add Existing Items)

Reza_Shamayel
یک شنبه 13 آبان 1386, 08:38 صبح
با عرض ادب خدمت همه عزیزان ...

جناب آقای سجادی، با تشکر از توجه شما و ارسال پاسخ، متاسفانه مشکل بصورت دیگری باقی ماند و آن اینکه:

بنده پس از اضافه کردن Component شما به یک پروژه خالی و ReBuild کردن پروژه و قرار گرفتن Component1 در ToolBox و نهایتا قرار دادن Component1 در فرم، علیرغم اینکه تنظیمات خواسته شده به همانگونه که خواسته بودم قابل رویت است، ولی از پنجره Properties نمیتونم مقدار AutoSize و Size رو تغییر بدم.

ضمنا در صورتیکه مقدار RightToLeft رو No کرده باشم، پس از سعی برای تغییر اندازه، مقدار اون به Yes برمیگرده.

Reza_Shamayel
چهارشنبه 16 آبان 1386, 11:52 صبح
با سلام خدمت همه دوستان ...

آیا واقعا تا حالا کسی با مشکلی که در ابتدای تاپیک مطرح کردم، برخورد کرده یا نه؟

ممنون میشم از اظهار نظر دوستانی که در زمینه ایجاد Class و Component تجربه ای دارند.

amirsajjadi
چهارشنبه 16 آبان 1386, 12:25 عصر
با سلام
این کدها رو جایگزین کدهای کامپوننتی که گذاشتم بکن


Public Class Component1
Inherits CheckBox
Dim bool As Boolean = True
Private Sub Component1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) HandlesMe.Resize
If bool = True Then
Me.AutoSize = False
Me.Size = New Size(120, 21)
Me.RightToLeft = Windows.Forms.RightToLeft.Yes
bool = False
End If
End Sub
End Class

Reza_Shamayel
چهارشنبه 16 آبان 1386, 20:31 عصر
با عرض ادب خدمت همه عزیزان ...

جناب آقای سجادی، با تشکر از توجه شما و ارسال پاسخ، متاسفانه هنوز مشکل باقیست.

اول اینکه زمانیکه Component رو از ToolBox به فرم اضافه میکنم، علیرغم اینکه AutoSize=False و RightToLeft=Yes هستش (طبق خواسته بنده)، ولی Size به اندازه رشته موجود در CheckBox بطور اتوماتیک تنظیم میشه (خلاف خواسته بنده).

دوم اینکه پس از اضافه نمودن CheckBox به فرم و تنظیم نمودن آن، مثلا قرار دادن AutoSize=True و یا RightToLeft=No، و نهایتا ReBuild کردن پروژه، مقدار AutoSize به False و RightToLeft به Yes (همان تنظیمات اولیه Component) عوض میشه.

ضمنا ممنون میشم از توجه و اظهار نظر همه عزیزانی که به نوعی در زمینه ایجاد Class و Component تجربه مشابه دارند.

Reza_Shamayel
شنبه 19 آبان 1386, 09:32 صبح
با عرض ادب و سلام مجدد خدمت همه عزیزان ...

با توجه به اینکه بنده این تاپیک رو یک هفته ای هست که ایجادش کردم و تا حالا پاسخ و راه حل منطقی و کاربردی در خصوص مشکل مطرح شده ارائه نشده (که حالا یا از کم لطفی اساتیده عزیزه یا احتمالا بخاطر سختی سوال)، تصمیم گرفتم که بعنوان جایزه برای هر کسی که بتونه این مشکل رو حل بکنه برنامه Xenocode Postbuild 2006 Professional رو کادوپیچ کنم که قابلیت مهم زیر رو عرضه میکنه:

فایل exe شما (که با Visual Studio .NET 2005 و یا Visual Studio 2005 ساخته اید) رو گرفته و یک فایل exe دیگه تحویلتون میده که اولا بدون نیاز به dot net framework کار میکنه (خودم امتحانش کردم فقط حجم فایل اجرایی دوم رو تقریبا 16 مگابایت افزایش میده) و دوم اینکه قابل Resource شدن نیستش.

باز هم ممنونم از توجه و اظهار نظر همه کسانی که به نوعی در زمینه ایجاد Class و Component تجربه مشابه دارند.

Reza_Shamayel
دوشنبه 21 آبان 1386, 14:00 عصر
سلام به همه عزیزان ...

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