楼上说的可取,看你程序的要求了。另外,你也可以在mouseup事件中加入以下代码。如果存在多选问题,还要判断shift键的状态。 private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { System.Drawing.Point pt = new Point(e.X, e.Y); DataGrid.HitTestInfo hti = dataGrid1.HitTest(pt); if(hti.Type == DataGrid.HitTestType.Cell) { this.dataGrid1.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.DataMember].Position=hti.Row; } else if (hti.Type == DataGrid.HitTestType.RowHeader) { int count=this.dataGrid1.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.DataMember].Count; for (int i=0;i<count;i++) this.dataGrid1.UnSelect(i); this.dataGrid1.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.DataMember].Position=hti.Row; this.dataGrid1.Select(hti.Row); } }
下面的代码已基本实现了右键选取,可是还有个问题就是可以多选,但我不想让他多选,如何去除? // 实现右键选取 private void dgPurchaseList_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { System.Drawing.Point pt = new Point(e.X, e.Y); DataGrid.HitTestInfo hit = this.dgPurchaseList.HitTest(pt); if (hit.Type == DataGrid.HitTestType.Cell ) { this.dgPurchaseList.Select(hit.Row); } }
只能使用遍历了 int count=this.dataGrid1.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.DataMember].Count; for (int i=0;i<count;i++) this.dataGrid1.UnSelect(i);
if (hit.Type == DataGrid.HitTestType.Cell ) { int count=this.dgPurchaseList.BindingContext[this.dgPurchaseList.DataSource,this.dgPurchaseList.DataMember].Count; for (int i=0;i<count;i++) this.dgPurchaseList.UnSelect(i); this.dgPurchaseList.Select(hit.Row); }
private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
System.Drawing.Point pt = new Point(e.X, e.Y);
DataGrid.HitTestInfo hti = dataGrid1.HitTest(pt);
if(hti.Type == DataGrid.HitTestType.Cell)
{
this.dataGrid1.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.DataMember].Position=hti.Row;
}
else
if (hti.Type == DataGrid.HitTestType.RowHeader)
{
int count=this.dataGrid1.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.DataMember].Count;
for (int i=0;i<count;i++)
this.dataGrid1.UnSelect(i);
this.dataGrid1.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.DataMember].Position=hti.Row;
this.dataGrid1.Select(hti.Row);
}
}
// 实现右键选取
private void dgPurchaseList_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
System.Drawing.Point pt = new Point(e.X, e.Y);
DataGrid.HitTestInfo hit = this.dgPurchaseList.HitTest(pt);
if (hit.Type == DataGrid.HitTestType.Cell )
{
this.dgPurchaseList.Select(hit.Row);
}
}
int count=this.dataGrid1.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.DataMember].Count;
for (int i=0;i<count;i++)
this.dataGrid1.UnSelect(i);
{
int count=this.dgPurchaseList.BindingContext[this.dgPurchaseList.DataSource,this.dgPurchaseList.DataMember].Count;
for (int i=0;i<count;i++)
this.dgPurchaseList.UnSelect(i);
this.dgPurchaseList.Select(hit.Row);
}