NET Framework 472 当isUsing为true时窗口y轴设置为0当isUsing为false时窗口y轴设置为-795利用线程一直判断只能在Load函数里操作
您可以在窗口的Load事件中创建一个后台线程来进行判断和设置窗口的Y轴位置。具体代码如下:
using System.Threading;
using System.Windows.Forms;
namespace YourNamespace
{
public partial class YourForm : Form
{
private bool isUsing;
private Thread positionThread;
public YourForm()
{
InitializeComponent();
}
private void YourForm_Load(object sender, EventArgs e)
{
isUsing = false;
// 创建后台线程
positionThread = new Thread(SetWindowPosition);
positionThread.IsBackground = true;
positionThread.Start();
}
private void SetWindowPosition()
{
while (true)
{
if (isUsing)
{
// 设置窗口的Y轴位置为0
if (InvokeRequired)
{
Invoke(new MethodInvoker(() => { Top = 0; }));
}
else
{
Top = 0;
}
}
else
{
// 设置窗口的Y轴位置为-795
if (InvokeRequired)
{
Invoke(new MethodInvoker(() => { Top = -795; }));
}
else
{
Top = -795;
}
}
// 暂停一段时间后再次判断
Thread.Sleep(100);
}
}
}
}
在上述代码中,我们创建了一个名为positionThread的后台线程,在YourForm_Load事件中启动该线程。该线程通过循环判断isUsing的值,根据值的不同设置窗口的Y轴位置。由于窗口的UI元素只能在创建它们的线程上进行访问,我们使用Control.Invoke方法来跨线程进行操作。最后,使用Thread.Sleep方法暂停一段时间后再次判断,以避免过于频繁的刷新
原文地址: https://www.cveoy.top/t/topic/iCl9 著作权归作者所有。请勿转载和采集!