0

好的,所以我用 C# 制作了一个表单。您可以在运行时移动控件,例如按钮,您可以移动它或图片。无论如何,我想知道是否无论如何你可以制作某种不可见的边框,这样你就不能将控件拖出程序的屏幕。就像在 Windows 中一样,您可以将窗口拖出屏幕区域。我不希望你能做到这一点,我想看看你是否也能做到你可以在控件周围制作边框,这样你就不能将它们拖到彼此上。任何帮助都会很棒!谢谢!

好吧,我正在使用带有 WinForms 的 DevExpress DXv2。

    private void groupControl2_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            groupControl2.Left += e.X - move.X;
            groupControl2.Top += e.Y - move.Y;
        }
    }

    private void groupControl2_MouseDown(object sender, MouseEventArgs e)
        {
             move = e.Location;
        }
4

1 回答 1

0

似乎您正在使用某种控制组件,为您提供拖放面板。

首先检查该控件库是否具有用于移出可见窗口区域的内置功能。

我想它有事件表明面板已经移动。检查这个伪代码:

if (panel.Left < 0) { } // Outside left border
if (panel.Top < 0) { } // Outside top border
if ((panel.Left + panel.Width) > form.Width){ } // Outside right border
if ((panel.Top + panel.Height) > form.Height) { } // Outside bottom border

任何一个:

如果事件支持取消,则在上述任何一种情况下取​​消它。否则你可以实现类似这个伪代码的东西(实际的 WinForms 尺寸需要一些不同的值)

// Outside left border
if (panel.Left < 0) { panel.Left = 0; }

// Outside top border
if (panel.Top < 0) { panel.Top = 0; } 

// Outside right border
if ((panel.Left + panel.Width) > form.Width)
{
    panel.Left = form.Width - panel.Width;
} 

// Outside bottom border
if ((panel.Top + panel.Height) > form.Height)
{
    panel.Top = (form.Height - panel.Height);
} 
于 2012-07-10T06:59:40.947 回答