C# 如何创建半透明表单win应用程序
我想为叠加效果创建一个半透明窗体。表格应该是透明的。 这是我尝试的方法,但它不是半透明的形式。所以请帮帮我C# 如何创建半透明表单win应用程序,c#,winforms,transparent,C#,Winforms,Transparent,我想为叠加效果创建一个半透明窗体。表格应该是透明的。 这是我尝试的方法,但它不是半透明的形式。所以请帮帮我 Form mMask = new Form(); mMask.FormBorderStyle = FormBorderStyle.None; mMask.BackColor = Color.DarkGray; mMask.Opacity = 0.10; mMask.Height = this.ClientRectangle.Height; m
Form mMask = new Form();
mMask.FormBorderStyle = FormBorderStyle.None;
mMask.BackColor = Color.DarkGray;
mMask.Opacity = 0.10;
mMask.Height = this.ClientRectangle.Height;
mMask.Width = this.ClientRectangle.Width;
mMask.Top = 0;
mMask.Left = 0;
mMask.Text = this.Text;
mMask.AllowTransparency = true;
mMask.ShowInTaskbar = false;
mMask.StartPosition = FormStartPosition.Manual;
mMask.TopLevel = false;
this.Controls.Add(mMask);
mMask.Show();
mMask.BringToFront();
请引导我,谢谢
我修改了这个例程,现在如下所示
使用表单调用技巧1
用表单调用技巧2
嗯,您正在尝试向另一个窗体的控件集合添加窗体,即顶级窗口?你在尝试什么?如果有一个框架能够真正处理真正的透明性(WPF),我不建议你在winforms透明性肥皂剧中进行艰苦的旅程。错误是:-错误1不能隐式地将类型“System.Windows.Forms.DialogResult”转换为“WindowsFormsApplication2.DialogResult”@Thomas error不在Aaron的代码中,因为他的代码没有名为
WindowsFormApplication2.DialogResult
的类。你应该用你的命名/导入语句做点什么。我更新了我的答案,使之成为一个完整的程序,带有结果截图。谢谢,我会看一看,然后再问几个问题。如果你想尝试我的答案,最简单的方法是使用我用来制作它的代码段编辑器
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace dialog
{
public class MaskedDialog : Form
{
static MaskedDialog mask;
static Form frmContainer;
private Form dialog;
private UserControl ucDialog;
private MaskedDialog(Form parent, Form dialog)
{
this.dialog = dialog;
this.FormBorderStyle = FormBorderStyle.None;
this.BackColor = System.Drawing.Color.Black;
this.Opacity = 0.50;
this.ShowInTaskbar = false;
this.StartPosition = FormStartPosition.Manual;
this.Size = parent.ClientSize;
this.Location = parent.PointToScreen(System.Drawing.Point.Empty);
parent.Move += AdjustPosition;
parent.SizeChanged += AdjustPosition;
}
private MaskedDialog(Form parent, UserControl ucDialog)
{
this.ucDialog = ucDialog;
this.FormBorderStyle = FormBorderStyle.None;
this.BackColor = System.Drawing.Color.Black;
this.Opacity = 0.50;
this.ShowInTaskbar = false;
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);
dialog.StartPosition = FormStartPosition.CenterParent;
mask.Show();
DialogResult result = dialog.ShowDialog(mask);
mask.Close();
return result;
}
public static DialogResult ShowDialog(Form parent, UserControl dialog)
{
mask = new MaskedDialog(parent, dialog);
frmContainer = new Form();
frmContainer.ShowInTaskbar = false;
frmContainer.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
frmContainer.StartPosition = FormStartPosition.CenterParent;
frmContainer.Height = dialog.Height;
frmContainer.Width = dialog.Width;
frmContainer.Controls.Add(dialog);
mask.Show();
DialogResult result = frmContainer.ShowDialog(mask);
frmContainer.Close();
mask.Close();
return result;
}
public static void CloseDialog()
{
if (frmContainer != null)
{
frmContainer.Close();
}
}
}
}
Form d = new Form();
d.Width = 400;
d.Height = 300;
MaskedDialog.ShowDialog(this, d);
UserControl1 uc = new UserControl1();
uc.CloseClicked += new UserControl1.CloseComplete(OnCloseClicked);
MaskedDialog.ShowDialog(this, uc);
void OnCloseClicked()
{
MaskedDialog.CloseDialog();
}
void Main()
{
var f = new Form
{
Width = 800,
Height = 600
};
var d = new Form
{
Width = 400,
Height = 300
};
var tb = new TextBox
{
Width = 250,
Height = 250,
Multiline = true,
Text = "Hello World",
Dock = DockStyle.Top
};
var b = new Button
{
Text = "Display Masked Dialog",
Dock = DockStyle.Top
};
b.Click += (s, e) =>
{
MaskedDialog.ShowDialog(f, d);
};
f.Controls.AddRange(new Control[] { tb, b } );
Application.Run(f);
}
public class MaskedDialog : Form
{
private Form dialog;
private MaskedDialog(Form parent, Form dialog)
{
this.dialog = dialog;
this.FormBorderStyle = FormBorderStyle.None;
this.BackColor = System.Drawing.Color.Black;
this.Opacity = 0.50;
this.ShowInTaskbar = false;
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)
{
var mask = new MaskedDialog(parent, dialog);
dialog.StartPosition = FormStartPosition.CenterParent;
mask.Show();
var result = dialog.ShowDialog(mask);
mask.Close();
return result;
}
}