如果你想要让 'Panel' 控件填充整个窗体,并且不需要设置为透明,可以使用 'Anchor' 属性来实现。以下是示例代码:

using System;
using System.Windows.Forms;

namespace WindowsFormsApp
{
    public partial class MainForm : Form
    {
        private bool isDragging = false; // 是否正在拖动
        private int mouseX, mouseY; // 鼠标在窗体上的相对位置

        public MainForm()
        {
            InitializeComponent();

            // 让 panelDrag 控件填充整个窗体
            panelDrag.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;

            // 将 panelDrag 控件的 Dock 属性设置为 Fill
            panelDrag.Dock = DockStyle.Fill;
        }

        private void panelDrag_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                isDragging = true;
                mouseX = e.X;
                mouseY = e.Y;
            }
        }

        private void panelDrag_MouseMove(object sender, MouseEventArgs e)
        {
            if (isDragging)
            {
                this.Left += e.X - mouseX;
                this.Top += e.Y - mouseY;
            }
        }

        private void panelDrag_MouseUp(object sender, MouseEventArgs e)
        {
            isDragging = false;
        }
    }
}

在以上示例代码中,我们将 'panelDrag' 控件的 'Anchor' 属性设置为 'AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right',以使其始终填充整个窗体。

然后,我们将 'panelDrag' 控件的 'Dock' 属性设置为 'Fill',以使其填充整个窗体可用区域。

通过以上代码,你可以实现无边框窗体中覆盖整个窗体的多个 'TableLayoutPanel' 控件,同时让一个新的 'Panel' 控件填充整个窗体,并通过控制该 'Panel' 控件的鼠标事件来实现拖动功能。当鼠标按下并拖动 'Panel' 控件时,整个窗体都会跟随鼠标移动。请确保将示例代码中的 'panelDrag' 替换为你实际使用的 'Panel' 控件的名称,并在窗体设计器中将 'MouseDown'、'MouseMove' 和 'MouseUp' 事件与对应的事件处理程序关联起来。

C# WinForms: 使用 Anchor 属性实现 Panel 控件填充整个窗体

原文地址: http://www.cveoy.top/t/topic/lQm 著作权归作者所有。请勿转载和采集!

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