protected override void OnMouseMove(MouseEventArgs e)
{
if (IsMousePress)
{
ListViewItem Curentterm=this.GetItemAt(e.X,e.Y);
int Ind = this.Items.IndexOf(Curentterm);
if (Ind < 0)
{
Ind = 0;
}
if(StartInd>-1)
{
if (Ind > StartInd)
{
if (!IsMoveDown)
{
///這點在起始節點上不選,在起始節點下選
if (StartInd < StartMoveInd)
{
this.Items[StartInd].Selected = false;
}
else
{
this.Items[StartInd].Selected = true;
}
}
SelectTerms(StartInd+1, Ind);
StartInd = Ind;
IsMoveDown = true;
}
else if (Ind < StartInd)
{
if (IsMoveDown)
{
if (StartInd > StartMoveInd)
{
this.Items[StartInd].Selected = false;
}
else
{
this.Items[StartInd].Selected = true;
}
}
SelectTerms(Ind, StartInd-1);
StartInd = Ind;
IsMoveDown = false;
}
}
this.Refresh();
}
base.OnMouseMove(e);
}
private void SelectTerms(int Start, int End)
{
if (Start < 0)
{
Start = 0;
}
for(int i=Start;i<=End;i++)
{
if (i == StartMoveInd)
{
this.Items[i].Selected = true;//起始項始終選擇
continue;
}
if (this.Items[i].Selected)
{
this.Items[i].Selected = false;
}
else
{
this.Items[i].Selected = true;
}
}
}
protected override void OnMouseDown(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
IsMousePress = true;
}
ListViewItem Curentterm = this.GetItemAt(e.X, e.Y);
StartInd = this.Items.IndexOf(Curentterm);
StartMoveInd = StartInd;
base.OnMouseDown(e);
}
protected override void OnMouseUp(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
IsMousePress = false;
}
IsMoveDown = true;//默認向下移動
StartInd = -1;
StartMoveInd = -1;
base.OnMouseUp(e);
}