如果有人可以帮助我,我将非常感激,我想要的只是代码,允许我更改标签页,同时从tabcontrol外面的树视图拖动treenode并将鼠标悬停在尚未显示的标签页上打开(选择)。
答案 0 :(得分:2)
当拖动操作仍然有效时,鼠标在tabcontrol上移动时将触发DragOver事件。您可以在DragOver处理程序的Change SelectedTab of TabControl on MouseOver中使用与mousemove逻辑类似的逻辑来切换选项卡。
编辑:
我做了一些MSDN研究并发现了一个可能的问题。 DragOver坐标是ScreenCoordinates,而示例代码中的Tab矩形是客户端坐标。您需要在点击检查之前转换拖动坐标。
Point clientPoint = tabControl1.PointToClient(new Point(e.X, e.Y));
EDIT2:
将一个简单的应用程序与TreeView和TabControl组合在一起,并且当我拖动选项卡时,以下DragOver处理程序正确切换了标签:
private void tabControl1_DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
Point clientPoint = tabControl1.PointToClient(new Point(e.X, e.Y));
for (int i = 0; i < tabControl1.TabCount; i++)
{
if (tabControl1.GetTabRect(i).Contains(clientPoint) && tabControl1.SelectedIndex != i)
{
tabControl1.SelectedIndex = i;
}
}
}