您可以在窗口的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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录