private void ListTab_DragDrop(object sender, DragEventArgs e)
{
if (!e.Data.GetDataPresent(typeof(TabPage))) return;
_tabDrag = false;
string tn = "";
bool bef = false;
Point cpos = new Point(e.X, e.Y);
Point spos = ListTab.PointToClient(cpos);
int i;
for (i = 0; i < ListTab.TabPages.Count; i++)
{
Rectangle rect = ListTab.GetTabRect(i);
if (rect.Left <= spos.X && spos.X <= rect.Right &&
rect.Top <= spos.Y && spos.Y <= rect.Bottom)
{
tn = ListTab.TabPages[i].Text;
if (spos.X <= (rect.Left + rect.Right) / 2)
bef = true;
else
bef = false;
break;
}
}
//タブのないところにドロップ->最後尾へ移動
if (string.IsNullOrEmpty(tn))
{
tn = ListTab.TabPages[ListTab.TabPages.Count - 1].Text;
bef = false;
i = ListTab.TabPages.Count - 1;
}
TabPage tp = (TabPage)e.Data.GetData(typeof(TabPage));
if (tp.Text == tn) return;
ReOrderTab(tp.Text, tn, bef);
}