ایجاد فرم سفارشی
برای این کار مناسب با کاری که می خوایم انجام بدیم (مثلا یه پروژه کتابخونه می خوایم درست کنیم یا هر چیز دیگه ، باید یه عکس متناسب انتخاب کنیم و سعی کنید که فرمت عکس png باشد ). حالا یه پروژه جدید درست می کنیم :
چند کار که روی Form خود باید انجام بدیم :
- اول اینکه خاصیت FormBorderStyle رو ، روی حالت None قرار بدیم
- دوم اینکه از قسمت Back Color و TarnsparencyKey یک رنگ مشابه با هم انتخاب می کنیم .
- و در آخر عکس خودمون رو از قسمت BackgroundImage به روی فرم Import میکنیم .
برنامه رو که Debug کنم قابلیت جابجایی فرم من نداره ما با این کد میتونیم قابلیت جابجایی رو فرم خودمون اضافه کنیم :
protected override void WndProc(ref Message m) { switch (m.Msg) { case 0x84: base.WndProc(ref m); if ((int)m.Result == 0x1) m.Result = (IntPtr)0x2; return; } base.WndProc(ref m); }
این کد مثل یک تابع یا یک کلاس در خارج بلوک و به صورت مستقل تعریف میشه . حالا برنامه ما قابلیت جابجایی داره . اما برنامه ما نه Close , Minimize , Maximize داره . سه دکمه به برنامه اضافه میکنیم ، سه تصویر هم متناسب با بستن ، بزرگنمایی و کوچک کردن به Button ها اضافه میکنیم . تصاویر رو از طریق BackgroundImage به Button ، Import میکنیم و خاصیت BackgroundImageLayout انرا روی حالت Zoom قرار میدهیم. فرم من تا اینجای آموزش به این شکل هستش:
خب و مرحله پایانی کار که سه کد مربوط به دکمه ها رو بهشون اضافه میکنیم .
کد مربوط به بستن :
this.Close(); //یا Application.Exit();
کد مربوط به کوچک کردن :
this.WindowState = FormWindowState.Minimized;
کد مربوط به بزرگ کردن :
this.BackgroundImage = Image.FromFile("نام تصویر انتخابیتون"); this.Width = Image.FromFile("نام تصویر انتخابیتون").Width; this.Height = Image.FromFile("نام تصویر انتخابیتون").Height; this.WindowState = FormWindowState.Maximized;
و نکته مهمی که نباید فراموش بشه اینه که تصویرتون رو کنار فایل اجرایی برنامه در پوشه Debug کپی کنید. برنامه رو اجرا کنید و لذت ببرید .
مدرس : امیر کوهکن
ایمیل : dev.kouhkan77@yahoo.com
جمیل : amirkouhkan1@gmail.com
سلام
تابع wndproc رو باید کجا فرخوانی کنیم؟
سلام…وقتی Maximize میشه دکمه ها هنوز سره جاشون هستن نمیشه کاری کرد که با بزرگ شدن صفحه اونا به گوشه منتقل بشن؟؟
سلام من اگه بخوام برنامه ای درست کنم ک چندتا عدد از کاربر بگیره و عددهارو از آخر ب اول نمایش بده چی کار کنم؟ لطفاً راهنمایی کنید
سلام دوست عزیز…سوالتونو توی پرسش و پاسخ مطرح بفرمایید…ممنون
ممنون آقای ابراهیمی بسیار عالی بود واقعا این مقاله ها خیلی ارزشمندن
ممنون آقای امیدوار، خیلی لطف دارین شما