一般DATAGRID每行列表的的最前一列(不知道怎么描述,就是第一个字段前的那列空的)用鼠标左键点一下就可以选定焦点在当前行! 我现在做了个右键删除快捷菜单 但是 右键某行的时候,焦点(也就是那个箭头不能指向当前行)不能指想当前行!请问高手们怎么解决啊?

解决方案 »

  1.   

    补充一下:我这是WINFORM 不是WEBFORM
      

  2.   

    删除完毕后
    select(0);可以么?你要删除的时候焦点就移出去,那么删除结果正确么?
      

  3.   

    那你要的应该是这个了!赫赫!DataGrid.HitTestInfo 类
    包含有关指定坐标处的 System.Windows.Forms.DataGrid 一部分的信息。无法继承此类。有关此类型所有成员的列表,请参阅 DataGrid.HitTestInfo 成员。System.Object
       System.Windows.Forms.DataGrid.HitTestInfo[Visual Basic]
    NotInheritable Public Class DataGrid.HitTestInfo
    [C#]
    public sealed class DataGrid.HitTestInfo
    [C++]
    public __gc __sealed class DataGrid.HitTestInfo
    [JScript]
    public class DataGrid.HitTestInfo
    线程安全
    此类型的所有公共静态(Visual Basic 中为 Shared)成员是线程安全的。但不保证任何实例成员是线程安全的。备注
    DataGrid.HitTestInfo 类与 DataGrid 控件的 HitTest 方法一起使用,以确定用户单击了 DataGrid 控件的哪个部分。DataGrid.HitTestInfo 类包含行、列和网格中被单击的部分。有关网格部分的完整列表,请参见由 Type 属性返回的 DataGrid.HitTestType 枚举。要返回 DataGrid.HitTestInfo,请从 DataGrid 控件的 MouseDown 事件调用 HitTest 方法。将 MouseEventArgs 的 x 和 y 属性传递给 HitTest 方法。示例
    [Visual Basic, C#, C++] 下面的示例使用 MouseDown 事件中的 HitTest 方法返回 DataGrid.HitTestInfo 对象。然后打印行、列和网格的一部分。[Visual Basic] 
    Public Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
       Console.WriteLine()
       Dim myHitTest As DataGrid.HitTestInfo
       ' Use the DataGrid control's HitTest method with the x and y properties.
       myHitTest = DataGrid1.HitTest(e.X, e.Y)
       Console.WriteLine("Column " & myHitTest.Column)
       Console.WriteLine("Row " & myHitTest.Row)
       Console.WriteLine("Type " & myHitTest.Type)
       Console.WriteLine("ToString " & myHitTest.ToString)
       Console.WriteLine("Format " & myHitTest.Type.ToString)
    End Sub
    [C#] 
    protected void dataGrid1_MouseDown
    (object sender, System.Windows.Forms.MouseEventArgs e)
    {
       Console.WriteLine();
       System.Windows.Forms.DataGrid.HitTestInfo myHitTest;
       // Use the DataGrid control's HitTest method with the x and y properties.
       myHitTest = dataGrid1.HitTest(e.X,e.Y);
       Console.WriteLine(myHitTest);
       Console.WriteLine("Column " + myHitTest.Column);
       Console.WriteLine("Row " + myHitTest.Row);
       Console.WriteLine("Type " + myHitTest.Type);
       Console.WriteLine("ToString " + myHitTest.ToString());
       Console.WriteLine("Hit " + myHitTest.Type.ToString());
    }
    [C++] 
    protected:
    void dataGrid1_MouseDown(Object* /*sender*/, System::Windows::Forms::MouseEventArgs* e)
    {
       Console::WriteLine();
       System::Windows::Forms::DataGrid::HitTestInfo* myHitTest;
       // Use the DataGrid control's HitTest method with the x and y properties.
       myHitTest = dataGrid1->HitTest(e->X,e->Y);
       Console::WriteLine(myHitTest);
       Console::WriteLine(S"Column {0}", __box(myHitTest->Column));
       Console::WriteLine(S"Row {0}", __box(myHitTest->Row));
       Console::WriteLine(S"Type {0}", __box(myHitTest->Type));
       Console::WriteLine(S"ToString {0}", myHitTest);
       Console::WriteLine(S"Hit {0}", __box(myHitTest->Type));
    }
    [JScript] 没有可用于 JScript 的示例。若要查看 Visual Basic、C# 或 C++ 示例,请单击页左上角的“语言筛选器”按钮 。要求
    命名空间: System.Windows.Forms平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版程序集: System.Windows.Forms (在 System.Windows.Forms.dll 中)请参见
    DataGrid.HitTestInfo 成员 | System.Windows.Forms 命名空间 | CurrentCell | GetCellBounds | HitTest | DataGrid.HitTestType 
      

  4.   

    你看这张图!
    http://whict.aooa.cn/1.jpg我点右键第三行的时候 右键菜单出来了,但是那个焦点 也就是肩头 还在第二行,当我点删除的时候我不是删除的第三行,而是第二行,!(我是根据索引号删除当前行!)所以我想问问怎样右键某行 也是使那肩头指向某行,这样我就很方面的删除了!
      

  5.   

    没有很麻烦吧!你看了上边的代码么?
    最多不过3,4行的有效代码!   System.Windows.Forms.DataGrid.HitTestInfo myHitTest;
       myHitTest = dataGrid1.HitTest(e.X,e.Y);
       Console.WriteLine("Column " + myHitTest.Column);
       Console.WriteLine("Row " + myHitTest.Row);然后select选中,难道不行么?
      

  6.   

    不用hittest如何知道鼠标在哪行上?并不复杂,就两行代码。
      

  7.   

    回复人: fengcan(长风) ( ) 信誉:95  2005-11-21 10:34:00  得分: 0  
     
     
       不用hittest如何知道鼠标在哪行上?并不复杂,就两行代码。
      
     说来听听!