PDA

View Full Version : سوال: طراحی فرم



mohsen gh
سه شنبه 20 تیر 1391, 12:19 عصر
سلام دوستان من چطور میتونم وقتی ی فرم رو نشون میدم مثل عکس زیر فرو اول تاریک بشه و فرم دومی نشون داده بشه ؟؟؟ و وقتی فرم 2 رو بستم فرم اول به حالت اولش برگرده ؟؟؟ ممنونم از همگی

veniz2008
سه شنبه 20 تیر 1391, 12:30 عصر
سلام، یه کامپوننت هست که کاری رو که میخوای انجام میده، اسمش component hide form. بگردی پیدا میکنی.

mohsen gh
سه شنبه 20 تیر 1391, 12:46 عصر
دوست من ممنون که جواب دادی ولی هرچی میگردم پیداش نمیکنم :(

robo_remi
سه شنبه 20 تیر 1391, 15:13 عصر
سلام به همه دوستان برنامه نویس من یه کامپوننتی دارم که تغریبا کار بالا رو انجام میده ببیند به دردتون بخوره.
این کامپوننت رو به رفرنس های سیستم اضافه کنید.
MPG_WinShutDowm.ShowShutForm sf = new MPG_WinShutDowm.ShowShutForm(new Forms.Form1_Eghma());
..............
توضیح :
در قسمتی که نوشته شده
Forms.Form1_Eghma() قسمتی که نوشته شده Form1_Eghmaاسم فرم شما هست که وقتی به اون حالت میروید میخواهید اون فرم نمایش داده بشه مثل زمانی که مخواهیم سیستم خود را خاموش کنیم پنجره ای باز میشود که ما خاموش یا ری استارت یا ... را انتخاب میکنیم.
امیدورام که بدردتون بخوره .نظر یادتونرنه.:بوس:

mohsen gh
چهارشنبه 21 تیر 1391, 23:39 عصر
سلام به همه دوستان برنامه نویس من یه کامپوننتی دارم که تغریبا کار بالا رو انجام میده ببیند به دردتون بخوره.
این کامپوننت رو به رفرنس های سیستم اضافه کنید.
MPG_WinShutDowm.ShowShutForm sf = new MPG_WinShutDowm.ShowShutForm(new Forms.Form1_Eghma());
..............
توضیح :
در قسمتی که نوشته شده
Forms.Form1_Eghma() قسمتی که نوشته شده Form1_Eghmaاسم فرم شما هست که وقتی به اون حالت میروید میخواهید اون فرم نمایش داده بشه مثل زمانی که مخواهیم سیستم خود را خاموش کنیم پنجره ای باز میشود که ما خاموش یا ری استارت یا ... را انتخاب میکنیم.
امیدورام که بدردتون بخوره .نظر یادتونرنه.:بوس:

تشکر دوست من ولی اینو خودم دارم اون کاری که من میخام رو انجام نمیده

the king
پنج شنبه 22 تیر 1391, 00:47 صبح
این از کلاس اش :

public class GrayStyle
{
public static void HideGray(System.Windows.Forms.Form target)
{
string grayName = target.Name + "_GrayLayer";
if (target.Controls.ContainsKey(grayName))
{
target.Controls[grayName].Dispose();
}
}

public static void ShowGray(System.Windows.Forms.Form target)
{
string grayName = target.Name + "_GrayLayer";
if (target.Controls.ContainsKey(grayName))
{
return;
}
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(target.Width
, target.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb) ;
System.Drawing.Rectangle dst = new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height);
target.DrawToBitmap(bmp, dst);
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp))
{
System.Drawing.SolidBrush grayBrush = new
System.Drawing.SolidBrush(System.Drawing.Color.Fro mArgb(50, 0, 0, 0));
g.FillRectangle(grayBrush, dst);
}
System.Windows.Forms.Panel grayLayer = new System.Windows.Forms.Panel();
grayLayer.Visible = false;
grayLayer.SuspendLayout();
grayLayer.Name = grayName;
grayLayer.Bounds = new System.Drawing.Rectangle(target.PointToClient(targ et.Location), target.Size);
grayLayer.BackgroundImage = bmp;
grayLayer.ResumeLayout(true);
target.Controls.Add(grayLayer);
grayLayer.BringToFront();
grayLayer.Visible = true;
System.Windows.Forms.Application.DoEvents();
}
}


اینم از مثال اش، تیره شدن فرم Form1 زمانی که فرم Form2 رو نشون می دهیم :

private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
GrayStyle.ShowGray(this);
f2.ShowDialog(this);
GrayStyle.HideGray(this);
}

Farshid007
دوشنبه 30 مرداد 1391, 17:10 عصر
اقا کینگ می تونی بجای حالت GRAY فرم رو بلور کنی؟

gwbasic
دوشنبه 30 مرداد 1391, 18:48 عصر
در برنامه های ویندوزی با ShowDialog‌ کردن فرم زیر غیر فعال می شه و نیازی به این کارا نیست. این اتفاق در برنامه های تحت وب می افته که اگه دقت کنید برنامه بالا تحت وب هست. و اونجا چون چیزی به نام ShowDialog وجود نداره. چندین راه جنگولک بازی هست که باید با استفاده از اون این مشکل رو برطرف کرد که صفحه غیر فعال بشه و یک فرمی به صورت Modal‌ باز بشه. برای این کار هم از یک div‌ استفاده می کنن که کل صفحه رو بپوشونه و حالت Transparent‌داشته باشه و ... . با استفاده از Jquery دیالوگ مدال باز کردن کار ساده ای هست ... . که مربوط به سی شارپ نمی شه و کدهای کلاینت سروری می خواد.

در برنامه های ویندوزی مرسوم نیست چنین کاری رو انجام بدیم مگر اینکه game‌ ای چیزی باشه.

nilmil_nil
دوشنبه 30 مرداد 1391, 19:00 عصر
با سلام
من تو یه برنامه حسابداری پیشرفته دیدم که این کار رو انجام داده بود ولسی فقط برای خروج از برنامه که فرم تاریک میشد و یه فرم کوچیک وسط باز میشد که عملیات خروج رو نشون میداد
یعنی خروج - انصزاف - خروج کاربر ....

samadblaj
دوشنبه 30 مرداد 1391, 19:09 عصر
توی ویندوز xp هم از این نوع استفاده شده.برید کنترل پنل Windows CardSpace رو انتخاب کنید.

ehsan7007
دوشنبه 30 مرداد 1391, 19:11 عصر
البته تو برنامه های چند فرمه برای تمرکز و یاد اوری یه موضوع مهم خوبه ولی نه برای هر فرم غیر از اصلی اون رو اینطوری کنیم ، تازه این بیشتر تو برنامه های full screen کاربرد داره.

gwbasic
دوشنبه 30 مرداد 1391, 19:24 عصر
توی ویندوز xp هم از این نوع استفاده شده.برید کنترل پنل Windows CardSpace رو انتخاب کنید.

عرض کردم این مورد جایی استفاده می شه که دسترسی به قسمتی رو بخوایم محدود کنیم. ولی ما در برنامه ویندوزی خودمون می تونیم به راحتی فرمی رو غیر فعال کنیم در صورت نیاز. این مورد رو که اشاره کردین دسترسی به کل سیستم رو محدود می کنه و چاره ای جز این راه نداره

the king
دوشنبه 30 مرداد 1391, 19:40 عصر
اقا کینگ می تونی بجای حالت GRAY فرم رو بلور کنی؟

به مثال پیوستی مراجعه کنید :

91563

این الان محو کردنش ابتدایی ترین حالت چهار پیکسلی و بدون ضریب است که فیلتر با کیفیتی نیست
اما سرعت اجرایش در بالاترین حد توان خود #C ئه، از این سریعتر بدون کمک DLL های جانبی نمیشه.
هر چی فیلتر محو کردن رو دقیق تر و تعداد پیکسل ها رو بیشتر کنیم کیفیت و قدرت محو کردنش
بیشتر میشه اما چون #C ذاتا کند ئه، اینکار رو نمی کنیم.