دوشنبه, ۱۰ اردیبهشت, ۱۴۰۳ / 29 April, 2024
مجله ویستا

گشودن رازهای درونی WinForms


گشودن رازهای درونی WinForms
نسخه جدید Windows Forms در .NET ۲.۰ دربردارنده‌ی پیشرفت‌های جالب توجه و مفیدی است که نه تنها بازدهی بیشتر را در پی دارند، بلکه امکان ایجاد برنامه‌های حرفه‌ای مشابه بسیاری از برنامه‌های دفتری (office) که به صورت روزمره از آنها استفاده می‌کنیم را نیز فراهم می‌نمایند. هدف این مقاله معرفی بسیاری از این ویژگی‌های جدید است که از سطح ابتدایی آغاز می‌شود و با ایجاد یک برنامه از سوی شما، بررسی هر ویژگی و نحوه یاری رساندن هر ویژگی به شما ادامه می‌یابد.
● پیشرفت در سطح پایه
کاری که در سطوح پایین‌تر Windows Forms انجام شده بسیار چشمگیر و قابل ملاحظه بوده است. اکنون طراحان، کد شما را از کدی که به صورت خودکار تولید می‌شود تفکیک نموده‌اند تا شما بتوانید بدون نگرانی در مورد تعدی به موارد تولید شده توسط طراح بر روی نوشتن کدتان تمرکز کنید. ویژگی جدید تنظیمات Application یک اساس و پایه بی نقص را برای اداره برنامه و نگهداری دائمی داده مختص کاربر فراهم می‌آورد، و Data Binding برای فراهم نمودن پشتیبانی عالی‌تر زمان طراحی و پیاده‌سازی ساده‌تر بازنگری شده است. استفاده از کلاس‌های جزئی (partial)، که یک ویژگی جدید از .NET ۲.۰ است، اکنون کار با کد تولید شده توسط طراح Windows Forms را بسیار ساده‌تر نموده است. در عرضه‌های قبلی کد شما و کد طراح در یک فایل قرار داشتند، به همین دلیل قابلیت اداره فعالیت توسعه شما بسیار ضعیف بود. حالا هنگامی که شما یک فرم را به پروژه خود می‌افزایید دو فایل تولید شده را تحویل می‌گیرید: یکی، [Form Name].Designer.(vb or cs)، که حاوی کد تولید شده توسط طراح است، و دیگری، [Form Name].(vb or cs)، که برای کد شما تولید می‌شود.
ویژگی جدید Application Settings، یک جایگزین برای خصیصه‌های پویا، توسعه دهندگان را قادر به ایجاد، ذخیره‌سازی، و نگهداری آسان داده‌های کاربر و برنامه بر روی کلاینت می‌نماید. این ویژگی فرایند توسعه را با فراهم کردن یک framework درونی برای کار با داده‌های برنامه از قبیل مکان‌های سرویس وب یا رشته‌های اتصال پایگاه داده، و داده‌های کاربر از قبیل موقعیت‌های صفحه کاربر یا موقعیت‌های دکمه بر روی یک نوار ابزار تسهیل می‌نماید. مراحل پیاده‌سازی تنظیمات برنامه در برنامه‌تان بسیار ساده و احیانا نیازمند کدنویسی بسیار کمی می‌باشند. آن به سادگی برگزیدن یک فرم یا کنترل، گشودن طراح ساده که تحت مدخل (PropertyBinding) گروه‌ها (ApplicationSettings) در پنجره‌ خصوصیات قرار دارد، انتخاب یک خصیصه، نام‌گذاری مدخل (entry)، و تنظیم حوزه آن برای برنامه یا کاربر است. مدل ثبت تنظیمات برنامه، که همچنین برای شما اداره شده است، متکی بر XML است و یا از فایل پیکربندی برنامه و عنصر <applicationSettings> برای دسترسی فقط-خواندنی به داده‌های مختص برنامه استفاده می‌کند یا از فایل user.config، که برای هر کاربر منحصر به فرد است، و عنصر <userSettings> برای دسترسی خواندن/نوشتن به داده‌های مختص کاربر.
پیشرفت‌های به وجود آمده در Data Binding بسیار عظیم هستند. از ویزاردها و کنترل‌های جدید تا قابلیت بازیابی داده‌ها از منابع داده مختلف، همه چیز بسیار یکپارچه‌تر از نسخه‌های قبلی است. اولین چیزی که توجه شما را جلب می‌نماید پنجره جدید Data Sources است که یک نقطه مشترک از reference را در هنگام کار با داده‌ها در سرتاسر برنامه‌تان فراهم می‌نماید. این پنجره متکی بر یک ویزارد ساده برای ایجاد منابع داده از یک پایگاه داده، فایل پایگاه داده محلی، سرویس وب، یا شیء تجاری سفارشی است، و مهارت کاربر را بر اساس نوع داده‌ای که شما خواهان بازیابی آن هستید تنظیم می‌کند. هنگامی که شما یک منبع داده را ایجاد نمودید آنگاه می‌توانید آن منبع داده را به عنوان پایه برای داده‌های موجود در فرم‌تان به کار ببرید. این می‌تواند از راه‌های مختلف صورت گیرد، از قبیل drag کردن یک فیلد از لیست فیلد منبع داده بر روی فرم‌تان و وادار ساختن طراح به ایجاد فیلد به صورت خودکار، یا طرح‌ریزی فرم‌تان و سپس متصل نمودن فیلد به کنترل فرم‌تان. هر کدام از این روش‌ها یک سری از کنترل‌ها را بر روی فرم‌تان ایجاد می‌کنند که پایه‌ای را برای سطح جدیدی از indirection و دسترسی ایمنی-نوع به داده به وجود می‌آورند که زیربنای پیشرفت‌های جدید انقیاد داده است.
کنترل اصلی که ایجاد شده کنترل DataSource است، که منبع داده مشترک برای تمامی کنترل‌های data bound می‌باشد. این کنترل پیچیدگی‌های داده underlining را کاهش می‌دهد، بدین ترتیب یک محل مشترک برای پیمایش، مرتب‌سازی، فیلتر کردن، و به روز رسانی داده‌های data bound فراهم می‌آورد، و همچنین هماهنگی داده‌ها را مدیریت می‌کند تا تمامی کنترل‌های مقید شده مشترک داده یکسانی را نمایش دهند. اگر شما با یک پایگاه داده کار می‌کنید، کنترل TableAdaptor نیز در طی این فرایند به فرم شما افزوده خواهد شد. این کنترل ارتباط میان برنامه شما و پایگاه داده را فراهم می‌سازد و می‌تواند به عنوان یک DataAdaptor با یک شیء اتصال درونی و قابلیت دارا بودن چندین پرس و جو در نظر گرفته شود. هر پرس و جوی موجود در TableAdaptor به عنوان یک متد ایمنی-نوع ارائه می‌شود و ملزم به برگرداندن schema یکسان است. در نهایت، کنترل BindingNavigator در صورت کار با یک پایگاه داده به فرم شما افزوده می‌شود، که به همراه کنترل DataSource برای کمک به پیمایش و دستکاری داده‌های فرم شما عمل می‌کند. UI کنترل‌های BindingNavigator متشکل از یک سری دکمه‌های ToolStrip، جعبه‌های متن، و عناصر متن ایستا برای اغلب اعمال معمول مرتبط با داده از قبیل افزودن داده، حذف داده، و پیمایش بر روی داده‌های فرم شما می‌باشد. چنان که می‌بینید، بسیاری از پیچیدگی‌های نسخه‌های قبلی Data Binding برای شما کاهش داده شده‌‌اند، در نتیجه کارآیی شما در هنگام ایجاد برنامه‌های مرتبط با داده‌ها افزایش یافته است.
● پیشرفت‌های طرح‌بندی، پیمایش، و تعامل کنترل فرم
در نسخه‌های قبلی Windows Forms چیزهایی وجود داشت که کارآیی شما را تضعیف می‌نمود. برای افراد مبتدی، طرح‌بندی کنترل‌ها بر روی یک فرم یک عمل بسیار خسته کننده و وقت‌گیر بود. پس از آن، مشکل پیمایش در میان تمامی کنترل‌های موجود بر روی یک فرم در طی توسعه و جابجایی تصادفی وجود داشت، در شرایطی که تمامی آن چیزی که شما خواهان انجام آن بودید دستیابی به یک خصیصه بود. در نسخه جدید Windows Forms، با این مسائل به شیوه‌ای جالب برخورد شده است.
طرح‌بندی (layout) کنترل‌ها بر روی یک فرم اکنون با ارائه ویژگی طراح Snaplines، کنترل FlowLayoutPanel، کنترل TableLayoutPanel، و کنترل SplitContainer پیشرفت کرده است. هنگامی که شما کنترل خود را در مجاوت کنترل دیگری انتقال می‌دهید ویژگی طراح Snaplines با نمایش خطوط anchor به صورت خودکار به طرح‌بندی واضح کنترل‌ها کمک می‌کند به گونه‌ای که چیدن و سازماندهی کنترل‌ها برای شما بسیار آسان خواهد شد. منطق ظهور خطوط anchor ترکیبی از مقادیر خصیصه‌های جدید حاشیه و padding بر روی تمامی کنترل‌ها و Windows Design Guidelines برای فضاگذاری کنترل‌های موجود بر روی فرم می‌باشد. کنترل FlowLayoutPanel یک کنترل دربردارنده (container) جدید است که طرح‌بندی کنترل‌های موجود در خود را بر مبنای مکان نسبی تنظیم می‌کند نه مکان مطلق، حالتی که طی آن شما یک کنترل را بر روی یک فرم drag می‌کنید. این کنترل امکان تعیین نمایش افقی یا عمودی کنترل‌های درون خود را بر اساس خصیصه FlowDirection به شما می‌دهد، و تعیین این که محتویات کنترل هنگامی که ابعاد آن کاهش می‌یابند بر اساس خصیصه WrapContents مختصر شوند.
این کنترل در وضعیت‌هایی که شما خواهان افزوده شدن دکمه‌هایی به صورت پویا در زمان اجرا به یک ناحیه از قبل موجود و وادار نمودن آنها به تنظیم شدن به صورت خودکار هستید بسیار خوب عمل می‌نماید. کنترل TableLayout، که آن نیز یک کنترل دربردارنده است، یک سری رفتارهای طرح‌بندی فراهم می‌نماید که جدول‌های HTML نیز آنها را فراهم می‌سازند، که این امر امکان قرار دادن کنترل‌ها درون grid را برای کاربر فراهم می‌آورد. درست همان گونه که در HTML صادق است، سطرها و ستون‌ها می‌توانند بر اساس تغییر یافتن محتوا و ابعاد صفحه کوچک و بزرگ شوند. خصیصه‌های RowCount، ColumnCount، و GrowStyle نحوه بروز واکنش از سوی grid در برابر محتویات افزوده شده به آن را کنترل می‌کنند و خصیصه‌های RowStyles و ColumnStyles چگونگی رفتار سطرها و ستون‌ها در هنگام کوچک شدن صفحه را کنترل می‌نمایند. این کنترل می‌تواند در وضعیت‌هایی که شما فرمی را طراحی می‌کنید که مستلزم بروز واکنش مناسب از سوی کنترل‌ها در مقابل تغییر اندازه صفحه است می‌تواند بسیار مفید باشد.
آخرین کنترلی که در این رده در مورد آن صحبت خواهم کرد کنترل SplitContainer است، که جایگزینی برای کنترل Splitter محسوب می‌گردد. این کنترل یک کنترل ترکیبی متشکل از دو پانل و یک نوار تفکیک کننده قابل جابجایی است، و جهت عمودی و افقی نوار تفکیک کننده بر اساس خصیصه‌ی Orientation قابل تنظیم می‌باشد. این کنترل شما را قادر به ایجاد رابط‌های کاربر پیچیده مشابه Outlook می‌نماید با یک پانل که تعیین می‌نماید در پانل دیگر چه چیز به نمایش در می‌آید. فرایند یافتن سریع یک کنترل بر روی یک فرم همواره کند بوده است و تا کنون هیچ گونه پشتیبانی برای پیمایش ساده کنترل‌ها در Windows Form وجود نداشته است. پنجره Document Outline نیز به طراح فرم افزوده شده است، از همین رو امکان پیمایش کنترل فرم درست همانند صفحات HTML فراهم شده است. محتویات فرم اکنون در یک نمای درختی قرار دارند، که این وضعیت به شما یک دید سلسله مراتبی از کنترل‌هایتان بر مبنای رابطه والد-فرزند کنترل‌های درون فرم می‌دهد.
● خانواده جدید ToolStrip کنترل‌ها
خانواده جدید ToolStrip کنترل‌هاجایگزین Toolbar، Menu و StatusBar قدیمی نسخه‌های قبلی می‌شود، که با استفاده از یک محیط غنی زمان طراحی شما را قادر به ایجاد برنامه‌های کاربردی با ظاهری حرفه‌ای شبیه نما و رفتار XP، Office، و Internet Explorer می‌سازد. ToolStrip ویژگی‌های پیشرفته بسیاری از قبیل docking، سفارش مجدد آیتم‌ها در زمان اجرای، پشتیبانی درونی برای drag کردن آیتم‌ها از یک ToolStrip به بعدی، و قابلیت اشتراک فضای واحد افقی یا عمودی با استفاده از کنترل ToolStripContainer برای نوار ابزارها فراهم نموده است. کنترل ToolStrip همچنین بسیار تنظیم‌پذیر و قابل بسط است، و خصیصه‌ها، متدها، و رویدادهای بسیاری را برای سفارشی‌سازی ظاهر و رفتارش فراهم می‌آورد. برای کمک به ایجاد برنامه‌هایی با ظاهر حرفه‌ای، کنترل ToolStrip به همراه کنترل‌های پیش‌ساخته بسیاری ارائه می‌شود که شما می‌توانید آنها را بیافزایید مانند ToolStripButton، ToolStripComboBox، ToolStripLabel، ToolStripDropDownButton، Tool-StripProgressBar و ToolStrip-TextBox. Menu-Strip، ContextMenuStrip، و Status-Strip، که جایگزین‌های همتایان قدیمی خود هستند، همگی از ToolStrip مشتق می‌شوند و در یک API مشترک شریک هستند، که برنامه‌نویسی با استفاده از آنها را سازگار، با ثبات و ساده می‌نماید.
● کنترل DataGridView
کنترل DataGridView جایگزین کنترل DataGrid نسخه‌های قبلی شده است و یک پلاتفرم بسیار تنظیم‌پذیر و قابل بسط را برای نمایش و ویرایش داده‌های جدولی فراهم می‌آورد. این کنترل می‌تواند با محدوده وسیعی از نوع‌های داده شامل یک آرایه یک بعدی ساده، یک شیء تجاری از نوع مستدل (strongly typed business object)، یک DataSet، و هر داده فراهم شده توسط کنترل DataSource که پیش از این مورد بحث قرار گرفت کار کند. از آنجایی که DataGridView برای ویرایش و نمایش داده‌ها طراحی شده است، تعجبی ندارد که آن بسیاری از انواع کنترل‌هایی که می‌توانند درون سلول‌های آن قرار گیرند را پشتیبانی می‌نماید، کنترل‌هایی شامل دکمه‌ها، checkbox ها، combobox ها، تصاویر، لینک‌ها، و جعبه‌های متن. سبک‌بندی (styling) این کنترل مبتنی بر یک سبک لایه‌ای است که از سطح سطر شروع می‌شود و با ستون ادامه پیدا می‌کند و در نهایت در سطح سلول خاتمه می‌یابد، با رفتاری شبیه style sheet های آبشاری. DataGridView به همراه ویژگی‌های درونی بسیاری ارائه می‌گردد که کار با آن را بسیار تسهیل می‌نمایند. اندازه ستون‌ها بر اساس محتویات‌شان به صورت خودکار تنظیم می‌شود که این امر موجب فراهم گردیدن یک ارائه واضح برای تغییر داده مربوط به اندازه می‌شود و ویژگی قفل نمودن سطر و ستون حس کار در یک worksheet اکسل را برای شما به ارمغان می‌آورد. در نهایت این کنترل از سطح سطر تا سطح سلول قابل برنامه‌نویسی است، به همین دلیل امکان ایجاد کارکردهایی را برای شما فراهم می‌نماید که با استفاده از کنترل DataGrid امکان‌پذیر نیستند.
● نتیجه
همانند هر موضوع دیگری با این گستردگی، من فقط به صورت سطحی به معرفی ویژگی‌های خاص نسخه جدید Windows Forms پرداختم. خبر خوب اینکه اطلاعات بسیار زیادی در مورد این موضوع قابل دستیابی می‌باشد و من لیستی از مقالات و Webcast های مفیدی که شما را در آغاز راه یاری می‌کنند در انتهای این مقاله فراهم نموده‌ام. این نسخه پیشرفت‌های فراوانی را به ارمغان می‌آورد که شما را قادر به ایجاد هر چه ساده‌تر برنامه‌های Windows Forms با ظاهری حرفه‌ای می‌نمایند، و با نسخه‌ای که تا زمان چاپ شدن این مقاله در دسترس شما خواهد بود هیچ عذری برای شما باقی نخواهد ماند – پس کدنویسی را شروع کنید و موفق باشید.

امین ایزدپناه
منبع : علم الکترونیک و کامپیوتر


همچنین مشاهده کنید