PDA

View Full Version : تاریک کردن اطراف فرم



windowsyar
چهارشنبه 14 تیر 1396, 09:25 صبح
سلام
راهی هست که بشود مانند عکس زیر تمام صفحه به جز فرم تاریک شود
باید دو تا فرم باشد که یکی opacity کمتر دارد و در زیر قرار می گیرد
ولی اگر هر دو تا به صورت فرم دیالوگ باشند مشکل به وجود می آید اگر نباشند روی فرم پایین تر کلیک کنی آن روی فرم جدید قرار می گیرد اگر هر دو topmust باشند باز هم نمی شود
به هر حال گیج شدم :متعجب:
نرم افزار بنکدار این کار را کرده است
ولی نفهمیدم چطوری ؟؟؟

vB.N3T
چهارشنبه 14 تیر 1396, 10:39 صبح
بله میشه
یه کلاس به اسم MaskedDialog به پروژه اضافه کنید.
و این کد ها رو داخلش قرار بدید

using System;
using System.Windows.Forms;

namespace Farmer
{
public partial class MaskedDialog : Form
{
private static MaskedDialog mask;
private static Form frmContainer;
private Form ucDialog;

private MaskedDialog(Form parent, Form ucDialog)
{
this.ucDialog = ucDialog;
this.FormBorderStyle = FormBorderStyle.None;
this.BackColor = System.Drawing.Color.Black;
this.DoubleBuffered = true;
this.Opacity = 0.30;
this.ShowInTaskbar = true;
this.StartPosition = FormStartPosition.Manual;
this.Size = parent.ClientSize;
this.Location = parent.PointToScreen(System.Drawing.Point.Empty);
parent.Move += AdjustPosition;
parent.SizeChanged += AdjustPosition;
}

private void AdjustPosition(object sender, EventArgs e)
{
Form parent = sender as Form;
this.Location = parent.PointToScreen(System.Drawing.Point.Empty);
this.ClientSize = parent.ClientSize;
}

public static DialogResult ShowDialog(Form parent, Form dialog)
{
mask = new MaskedDialog(parent, dialog);
frmContainer = dialog;
frmContainer.ShowInTaskbar = true;
frmContainer.StartPosition = FormStartPosition.CenterParent;
frmContainer.Height = dialog.Height;
frmContainer.Width = dialog.Width;
mask.MdiParent = parent.MdiParent;
mask.Show();
DialogResult result = frmContainer.ShowDialog(mask);
frmContainer.Close();
mask.Close();
return result;
}

public static void CloseDialog()
{
if (frmContainer != null)
{
frmContainer.Close();
}
}

private void InitializeComponent()
{
this.SuspendLayout();
//
// MaskedDialog
//
this.ClientSize = new System.Drawing.Size(284, 262);
this.Name = "MaskedDialog";
this.Load += new System.EventHandler(this.MaskedDialog_Load);
this.ResumeLayout(false);

}

private void MaskedDialog_Load(object sender, EventArgs e)
{

}
}
}
به جای خط سوم که اینحا Farmer هست اسم پروژه خودتون رو بنویسید
حالا داخل برنامت هر جا خواستی فرم جدیدی باز کنی که اطرافش تیره بشه از این کد استفاده میکنید

Frm_up_farmer nw = new Frm_up_farmer();
MaskedDialog.ShowDialog(this, nw);
به جای Frm_up_farmer اسم فرم خودتونو مینوسید
اگرم خاستی فرم تیره تر بشه قسمت Opacity داخل کد های کلاس رو تغیر بدید