如何解决C#-将PictureBox拖放到TableLayoutPanel上
|| 我正在C#中构建一个类似拼字游戏的游戏,在那里我有一个\“ letters \”(PictureBox控件)的集合,并且需要将它们拖放到游戏板上(TableLayoutPanel显示PictureBox控件的网格)。 最初,我尝试在MouseDown事件处理程序内的字母PictureBox上使用DoDragDrop()方法,但是一旦我开始拖动,就无法使控件执行任何操作。我引用了此代码项目。 用尽所有内容之后,我尝试使用MouseDown,MouseMove和MouseUp事件处理程序“手动”移动PictureBox:private void letter1PictureBox_MouseDown(object sender,MouseEventArgs e)
{
if (sender is PictureBox && e.Button == MouseButtons.Left)
{
isDragging = true;
dragOffsetX = e.X;
dragOffsetY = e.Y;
}
}
private void letter1PictureBox_MouseMove(object sender,MouseEventArgs e)
{
if (isDragging)
{
PictureBox letter = (PictureBox)sender;
letter.BringToFront();
letter.Top += (e.Y - dragOffsetY);
letter.Left += (e.X - dragOffsetX);
}
}
我的问题是,当尝试将PictureBox拖到我的TableLayoutPanel上(或包含在GroupBox之外的任何地方)时,PictureBox消失在控件/面板后面。
我以为BringToFront()调用会阻止这种情况,不是吗?
非常感谢您的帮助。
解决方法
将TableLayoutPanel发送回设计窗口是否有帮助?我想你可能已经尝试过了。
,谁是图块(PictureBox)的父级?是TableLayoutPanel还是Form?
您可能需要使TableLayoutPanel为PictureBox的父级。我不认为这种面板前面有“喜欢”对象。
另外,将瓷砖自己卡紧就位不是更容易/更好吗?
int posX=(posX/tileSize)*tileSize;
int posY=(posY/tileSize)*tileSize;
该整数除法/乘法应将其捕捉到网格中,但仅在用户释放图块后才应用它。要知道图块所在的单元格,请不要在结尾处乘以tileSize:
int cellX=(posX/tileSize);
int cellY=(posY/tileSize);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。