首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >把TableLayoutPanel丢到面板上?

把TableLayoutPanel丢到面板上?
EN

Stack Overflow用户
提问于 2015-05-15 11:29:36
回答 1查看 2.3K关注 0票数 1

我正在使用winforms/c#为面板中的tablelayoutpanel尝试拖放,但是问题是tablelayout的拖放没有出现!!有什么解决办法吗??

代码语言:javascript
复制
private void Registration_Load(object sender, EventArgs e)
{   
     panel2.AllowDrop = true;
     tableLayoutPanel1.AllowDrop = true;
     panel2.DragEnter += panel2_DragEnter;   
     panel2.DragDrop += panel2_DragDrop;
     tableLayoutPanel1.MouseDown += tableLayoutPanel1_MouseDown;
}   

private void panel2_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Move;
}

private void panel2_DragDrop(object sender, DragEventArgs e)
{
     ((TableLayoutPanel)e.Data.GetData(typeof(TableLayoutPanel))).Parent (Panel)sender;                
}
private void tableLayoutPanel1_MouseDown(object sender, MouseEventArgs e)
{
     tableLayoutPanel1.DoDragDrop(tableLayoutPanel1, DragDropEffects.Move);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-15 11:42:00

代码不足,您至少需要设置已丢弃的TLP的Location属性,以确保其位于面板边界内和/或位于鼠标光标处。而Z-order很重要,将父属性设置在底部,这样面板中的其他控件就可以很容易地重叠,您需要BringToFront()。

试试这个:

代码语言:javascript
复制
    private void panel2_DragEnter(object sender, DragEventArgs e) {
        if (e.Data.GetDataPresent(typeof(TableLayoutPanel))) e.Effect = DragDropEffects.Move;
    }

    private void panel2_DragDrop(object sender, DragEventArgs e) {
        var tlp = (TableLayoutPanel)e.Data.GetData(typeof(TableLayoutPanel));
        tlp.Location = panel2.PointToClient(new Point(e.X, e.Y));
        tlp.Parent = panel2;
        tlp.BringToFront();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30258394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档