ساخت Windows Form منعطف در سی شارپ

گاهی اوقات ممکن است نیاز داشته باشید تا برنامه‌ای بسازید که امکان تغییر سایز داشته باشد. یعنی کاربر بتواند ابعاد پنجره برنامه را به دلخواه تغییر دهد و یا پنجره برنامه را به حالت Maximize ببرد. یکی از کامپوننت‌های ساده برای ساخت Windows Form منعطف در سی شارپ TableLayoutPanel است. در این آموزش می‌خواهیم نحوه‌ی استفاده از این کامپوننت را فرا بگیریم. برای شروع یک پروژه WinForm مانند تصویر زیر در ویژوال استودیو ایجاد کنید.

flexible 1

پنجره‌ی اصلی اسن برنامه که در تصویر فق نمایش داده شده است، ابعادی معادل ۴۰۰ پیکسل عرض و ۳۰۰ پیکسل ارتفاع دارد. همچنین تمام فرم راست چین یا همان RTL شده است. پس از ایجاد فرم اصلی از منوی ToolBox ابزار TableLayoutPanel را انتخاب کنید. این کامپوننت برای ایجاد محدوده‌های منعطف با ساختار جدولی یعنی شامل سطرها و ستون‌ها، مورد استفاده قرار می‌گیرد.

flexible2

هنگامی که کامپوننت TableLayoutPanel را انتخاب کنید و بر روی فرم کلیک کنید، یک محدوده جدول مانند همانند تصویر زیر نمایان خواهد شد. بطور پیشفرض این جدول دو ستون(Column) و دو سطر(Row) دارد.

TableLayoutPanel

جهت ویرایش تعداد سطرها یا ستون‌های این جدول، و یا تعیین سهم هر سطر یا ستون از کل فضای عمودی یا افقی، می‌توانیم بر روی ایکون بالا سمت راست کامپوننت کلیک کنیم و گزینه Edit Rows and Columns را انتخاب کنیم.

edit tablelayoutpanel

با کلیک بر روی گزینه‌ی مذکور، پنجره ویرایش سطر‌ها و ستون‌های جدول نمایان خواهد شد. در این صفحه می‌توانید تعداد سطرها و ستون‌ها را کم یا زیاد کنید. درصد سهم هر سطر یا ستون را بر اساس درصد(Percent)، مقدار مشخص بر حسب پیکسل(Absolute) و یا بصورت سایز خودکار(AutoSize) قرار دهید.

edit tablelayoutpanel 2

برای مثالی که در این آموزش می‌خواهیم انجام بدهیم، فرض ما این است که برنامه از یک منوی کناری در سمت راست با درصد مالکیت افقی ۳۰ درصد و یک بخش محتوا با درصد مالکیت افقی ۷۰ درصد تشکیل شده است. در نتیجه تنها دو ستون و یک سطر نیاز خواهیم داشت و تمام مقدار دهی‌ها را بر حسب درصد انجام می‌دهیم. نتیجه توضیحات ما مانند تصویر زیر خواهد شد.

two column tablelayoutpanel

خب تا به اینجای کار ما دو ستون اصلی جهت قرار گرفتن کنترل‌ها را ایجاد کردیم. اما ایرادی که هنوز برطرف نشده این است که TableLayoutPanel ما تمام وسعت پنجره را پوشش نمی‌دهد. برای رفع این ایراد باید به خصوصیات(Properties) کامپوننت برویم و مقدار Dock آن را به حالت Fill تغییر دهیم.

Dock Fill

در تصویر فوق نشان داده شده است که چگونه وضعیت Dock را به مقدار Fill تغییر دهیم. با اینکار، کامپوننت ما خود را به اندازه کامپوننت پدر خود که پنجره‌ای اصلی برنامه است، وسعت می‌دهد. کامپوننت پدر همان کامپوننتی است که کامپوننت ما در آن قرار گرفته است. همانطور که اشاره شد در مثال ما پنجره‌ی برنامه کامپوننت پدر برای TableLayoutPanel است. در نتیجه، تغییر Dock به مقدار Fill باعث می‌شود که TableLayoutPanel به اندازه ابعاد پنجره وسعت یابد. به تصویر زیر دقت کنید.

TableLayoutPanel full size

خب، بیاید مثال این آموزش را کمی پیچیده‌تر کنیم. فرض کنید در ستون سمت چپ که ۷۰ درصد عرض پنجره را اشغال خواهد کرد، سه ردیف برای قرار دادن محتوا داشته باشیم. این سه ردیف هر سه ارتفاع برابری داشته باشند. یعنی از نظر عمودی هر کدام تقریبا ۳۳ درصد از ارتفاع را به خود اختصاص دهند.

حال که به ساختار جدولی TableLayoutPanel فکر می‌کنیم، انجام اینکار غیرممکن به نظر می‌رسد. زیرا تعریفی که از جدول در ذهن داریم، این است که سطر‌ها و ستون‌ها در نظمی مشخص کنار هم قرار گیرند. اما برای حل این چالش می‌توانیم در ستون سمت چپ یک نمونه دیگر از کامپوننت TableLayoutPanel قرار دهیم. به تصویر زیر نگاه کنید.

Nested TableLayoutPanels

برای این کامپوننت جدید نیز به قسمت ویرایش سطرها و ستون‌ها می‌رویم. این‌بار به یک ستون با درصد مالکیت افقی کامل و سه ردیف با درصد مالکیت عمودی برابر نیاز داریم.

TableLayoutPanel 3 rows

پس از اعمال تغییرات مورد نیاز برای تعداد سطر‌ها و ستون‌ها، از منوی Properties کامپوننت جدید، مقدار Dock را به Fill تغییر می‌دهیم تا این جدول جدید تمام وسعت کامپوننت پدر را که همان ستون سمت چپ کامپوننت اول است، پر کند.

flexible windows form

بسیار عالی، همه چیز بی‌عیب به نظر می‌رسد. بخش‌بندی‌های مورد نیاز خود را انجام دادیم. اکنون زمان چیدن کنترل‌هاست. از آنجا که می‌خواهم این آموزش ساده باشد و تمرکز آن روی موضوع اصلی باشد، یک کامپوننت ساده را جهت جایگذاری در مکان‌های مورد نظر انتخاب می‌کنم. این کامپوننت GroupBox است. برای انتخاب این کامپوننت به منوی ToolBox بروید و از بخش Containers کامپوننت مورد نظر را انتخاب کنید.

GroupBox

پس از انتخاب کامپوننت GroupBox، بر روی ستون سمت راست که ۳۰ درصد از عرض برنامه را اشغال می‌کند، کلیک کنید. کامپوننت در ستون مربوطه قرار می‌گیرد.

windows form

اما همانطور که در تصویر بالا نیز مشخص است، کامپوننت GroupBox تمام فضای ستون را پر نکرده است. برای رفع این ایراد باید از منوی Properties مربوط به GroupBox خصوصیت Dock را به مقدار Fill تغییر دهیم.

GroupBox Dock Fill

همانطور که مشاهده می‌کنید GroupBox تمام ستون را پر کرد.

full size groupbox

همین کار را برای سه بخش دیگر نجام دهید تا در نهایت به حالت نمایش داده شده در تصویر زیر برسید.

flexible windows form

توجه کنید که حتما برای پنجره اصلی برنامه حداقل سایز تعیین کنید. با اینکار می‌توانید مطمئن شوید که کاربر نمی‌تواند برنامه را از ابعاد تعیین شده کوچک‌تر کند. برای تعیین حداقل سایز پنجره، بر روی فرم اصلی برنامه کلیک کرده و سپس از منوی Properties خصوصیت Minimum Size را مقداردهی کنید.

windows form size

بسیار عالی، تمام موارد مورد نیاز انجام شد. حال برنامه را اجرا کنید(Run) و سعی کنید ابعاد پنجره را تغییر دهید. خواهید دید که نسبت‌هایی که تعیین کردید در هر حالتی پایدار خواهند بود.

windows form scale width

windows form scale height

امیدوارم که نحوه‌ی ساخت Windows Form منعطف در سی شارپ را بخوبی یاد گرفته باشید. همچنین برای مطالعه سایر آموزش های سی شارپ می‌توانید به دسته مربوطه مراجعه کنید.

موفق و پیروز باشید…

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *