我试图做透明和可点击的表格。此表单将全屏显示。所以这个表单必须是可点击的。例如,如果桌面存在于此表单后面,我必须能够单击文件夹并打开。 如果文档存在,我必须能够更改此文档。我无法解决如何启用此功能。 我认为可以使用API代码完成,但我不知道哪个API。如果你能给我一些信息/链接,我会很高兴。
答案 0 :(得分:0)
这很简单,无需调用任何API函数即可运行。 但它会禁止您的程序与用户进行任何交互。 对于屏幕保护程序,这没有任何意义,但至少不像你描述的那样。 规则如下:
任何不是100%透明的内容都不是点击型。
因此,您可以使用Opacity
和Black BackColor
轻松创建更暗的屏幕,但不会点击。
最简单的解决方案是在MouseMove
上使用Timer
在两种模式之间切换以重新启用保存模式,可能是这样的:
public Form1()
{
InitializeComponent();
this.Text = "";
this.MinimizeBox = false;
this.MaximizeBox = false;
this.ControlBox = false;
this.WindowState = FormWindowState.Maximized;
switchSaverState(false);
}
Point lastMosePosition = Point.Empty;
int savingWaitMinutes = 10;
int minute = 60000;
Timer timer1 = new Timer;
void switchSaverState(bool saving)
{
if (saving)
{
this.BackColor = Color.Black;
this.Opacity = 0.8;
}
else
{
this.TransparencyKey = Color.Fuchsia;
this.BackColor = Color.Fuchsia;
this.Opacity = 1;
timer1.Interval = minute * savingWaitMinutes;
timer1.Start();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
if (timer1.Interval == minute * savingWaitMinutes)
{
timer1.Interval = 100;
switchSaverState(true);
lastMosePosition = Cursor.Position;
}
else
{
if (Cursor.Position != lastMosePosition) { switchSaverState(false); }
}
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
lastMosePosition = Cursor.Position;
switchSaverState(false);
}
但又一次:这就像一个屏幕保护程序,这意味着你在“保存”时无法工作!为此,请使用显示器上的控件!!