PDA

View Full Version : مقاله: مزاياي استفاده از Split Container در طراحي پنجره



ROSTAM2
یک شنبه 01 مرداد 1391, 16:37 عصر
به نام خداوند سبحان
ايام مبارك رمضان مبارك و طاعات و عبادات قبول حق

مزاياي استفاده از Split Container در طراحي

1. قابليت تقسيم بندي پنجره
2. قابليت ثابت نگهداشتن قسمتي از پنجره هنگام تغيير سايز پنجره
3. قابليت پنهان كردن قسمتي از پنجره هنگام اجراي برنامه
4. قابليت راست چين شدن اشياء بدون تغيير راست به چپ پنجره و بهم ريختگي نماي پنجره

براي شروع از ToolBox شئ SplitContainer‌ را انتخاب و بر روي پنجره خالي از شئ كليك كنيد، اين شئ بصورت پيشفرض تمامي محيط فرم را به خود اختصاص مي دهد بعبارتي ديگر خاصيت Dockable آن Fill خواهد شد.
براي اينكه حالت جداسازي فرم راتعيين كنيد (افقي يا عمودي) خاصيت Orientation را تغيير دهيد
براي اينكه يك قسمت (Panel) از شئ هنگام تغيير سايز فرم تغييري نيابد از خاصيت FixedPanel استفاده كنيد
براي تعيين فاصله Panel هاي شئ از خصوصيت SplitterWidth استفاده كنيد
اگر مايليد اشياء درون شئ مذكور راست چين شوند كافيست خاصيت RighttoLeft از اين شئ را به True تغيير دهيد در اين صورت حالت چپ چين فرم بهم نمي ريزد...

ROSTAM2
یک شنبه 01 مرداد 1391, 18:15 عصر
يه چيز ديگه كه يادم رفت بگم مهمه مخفي كردن يك قسمت از اين شئ براي گسترده شدن قسمت ديگر آن و مخفي شدن و يا نمايان شدن اشيائي كه در قسمت مورد نظر قراردارند هست كه براي اين كار از PanelxCollapsed استفاده مي شه

بالفرض مثال اگر بخواهيم Panel1 و اشياء موجود درآن را Hide و بالعكس نمايان كنيم:


SplitContainer1.Panel1Collapsed = Not SplitContainer1.Panel1Collapsed


اين دستور باعث ميشه هربار كه بر روي كليد يا آيتم منويي كه رويداد آن آن را در بر گرفته كليك كنيم هر بار Hide or Show بشه

بعدالظهر زيبا و دلپذيري داشته باشيد ...

mahdibham
چهارشنبه 25 آبان 1401, 10:01 صبح
يه چيز ديگه كه يادم رفت بگم مهمه مخفي كردن يك قسمت از اين شئ براي گسترده شدن قسمت ديگر آن و مخفي شدن و يا نمايان شدن اشيائي كه در قسمت مورد نظر قراردارند هست كه براي اين كار از PanelxCollapsed استفاده مي شه

بالفرض مثال اگر بخواهيم Panel1 و اشياء موجود درآن را Hide و بالعكس نمايان كنيم:


SplitContainer1.Panel1Collapsed = Not SplitContainer1.Panel1Collapsed


اين دستور باعث ميشه هربار كه بر روي كليد يا آيتم منويي كه رويداد آن آن را در بر گرفته كليك كنيم هر بار Hide or Show بشه

بعدالظهر زيبا و دلپذيري داشته باشيد ...


عالی بود رستم جان بسیار استفاده کردم..
فقط یک مسئله ای و اینکه اگر من بخوام از طریق یک فرم مادر دسترسی پیدا کنم به فرم فرزند و هنگام اجرا شدن فرم اون پنل یک رو مخفی کنم چطور باید دسترسی بدم؟


frm2.splitContainer1.Panel1Collapsed = frm2.splitContainer1.Panel1Collapsed;


من این دستور رو داخل فرم مادر اجرا کردم در زمانی که روی Datagridview دابل کلیک میشه به این طریق وارد فرم فرزند میشه و در این هنگام میخوام پنل اول پنهان شده و فرم هم به اندازه ی پنل دوم باشه.
ولی داخل کد اون Not نشد که جای گذاری بشه.

ROSTAM2
چهارشنبه 25 آبان 1401, 10:54 صبح
سلام.

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


Protected Sub MDIChildNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
Dim NewMDIChild As New Form2()
With NewMDIChild
'Set the Parent Form of the Child window.
.MdiParent = Me
.SplitContainer1.Panel1Collapsed = True
'Display the new form.
.Show()
End With
End Sub


و برای Show و Hide شدنش برای هربار کلیک:

SplitContainer1.Panel1Collapsed = Not SplitContainer1.Panel1Collapsed

!البته اگر منظورت از فرم مادر MDI Parent Form باشه!

چون زبان برنامه نویسی مورد استفاده شما #C هست بهتره برای سوالها تون یک تاپیک در #C ایجاد کنید:

#C:


protected void MDIChildNew_Click(object sender, System.EventArgs e){
Form2 newMDIChild = new Form2();
// Set the Parent Form of the Child window.
newMDIChild.MdiParent = this;
newMDIChild.SplitContainer1.Panel1Collapsed =True;
// Display the new form.
newMDIChild.Show();
}


و برای Show و Hide شدنش برای هربار کلیک:


SplitContainer1.Panel1Collapsed = !SplitContainer1.Panel1Collapsed


در اصل نوع محتوای خصوصیت PanelXCollapsed حقیقی یا Boolean هست و مقدار True یا False میگره:

برای نمایش داده شدن باید False و برای مخفی شدن باید True بشه.

mahdibham
چهارشنبه 25 آبان 1401, 13:34 عصر
عالی، درجه یک و بی نقص..
مرسی مرسی مرسی
البته یک مسئله که باقی میمونه اینه که چطور حاشیه فرم هم به حاشیه شی داخل فرم چسبیده باشه و قسمت بالایی از بین بره؟؟
الان اتفاقی که میفته با این دستور به صورت تصویر زیر میشه:
154211
در این تصویر، datagridview که در بالای این GroupBox بود پنهان شد و این گروپ باکس حاشیه بالا را پر کرد ولی پایین ان در قسمت پایین فرم ماند.(یعنی فرم هم اندازه ی گروپ باکس نشد بلکه برعکس، گروپ باکس هم اندازه ی فرم شد.)

mahdibham
چهارشنبه 25 آبان 1401, 14:17 عصر
با دستور زیر انجام شد.. مرسی ازشما

frm2.Size = new Size(777, 242);