不可见边界C#

不可见边界C#,c#,winforms,border,collision,mousemove,C#,Winforms,Border,Collision,Mousemove,好的,我用C#做了一个表格。您可以在运行时移动控件,例如按钮、按钮或图片。不管怎么说,我想知道是否有任何方法可以制作某种不可见的边框,这样就不能将控件拖出程序的屏幕。就像在Windows中一样,您可以将窗口拖出屏幕区域。我不希望你能做到这一点,我想看看你是否也能做到这样,你可以在控件的边界上画出它们自己的边界,这样你就不会把它们彼此拖在一起了。任何帮助都会很好!谢谢 我在WinForms中使用DevExpress DXv2 private void groupControl2_Mouse

好的,我用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;
        }

看起来您正在使用某种控制程序集,它为您提供了可以拖放的面板

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

我想它有一些事件表明面板已移动。检查此伪代码:

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
if(panel.Left<0){}//在左边框外
如果(panel.Top<0){}//在上边框外
如果((panel.Left+panel.Width)>form.Width){}//在右边框外
如果((panel.Top+panel.Height)>form.Height){}//在底部边框外
要么:

如果事件支持cancel,则在上述任一情况下取消。否则,您可以实现类似于此伪代码的东西(实际的WinForms维度需要一些不同的值)

//左边框外
如果(panel.Left<0){panel.Left=0;}
//顶部边界外
如果(panel.Top<0){panel.Top=0;}
//右边界外
如果((面板左+面板宽度)>形状宽度)
{
panel.Left=form.Width-panel.Width;
} 
//外底边界
如果((面板顶部+面板高度)>形状高度)
{
panel.Top=(form.Height-panel.Height);
} 

您是如何实现这一点的?您应该无法将它们从父窗体中拖出。请不要使控件的Left属性小于0且大于ClientSize.Width-control.Width。你能粘贴一些代码和截图吗?我真的很好奇。@非常好,谢谢你们,我将制作一段YouTube视频,大约一分钟长,演示我所说的内容。我真的不能发布截图来让你正确理解。谢谢。回家后我将试用这段代码,并将结果报告给您。@ClintonLawson请更新您的帖子,包括您用于拖放功能的控件库。
// 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);
}