5

私はDataGridViewフォームを持っています。行を右クリックすると、コンテキスト メニューを開くプログラムが必要です。このコンテキスト メニューを使用して、 のデータを変更できるようにしたいと考えていますDataGridView

右クリックした場所を表示するコンテキスト メニューを取得しましたが、ここからどこに移動すればよいかわかりません。(たとえば) 行全体を削除するので、その行のインデックスを取得し、それを選択済みに設定する必要があります。イベントでこれを試しましたcell_clickedが、マウスの左ボタンまたは右ボタンが押されたかどうかを判断できません。しかし、mouse_clickイベントでは行インデックスを取得できません。

これが私のコードです:

public Form()
{
   ContextMenu contextMenu = new ContextMenu();

   //Fill Context Menu
   MenuItem delete = new MenuItem("Delete");
   contextMenu.MenuItems.Add(delete);
}

private void grdSchedules_MouseClick(object sender, MouseEventArgs e)
{
   if (e.Button == System.Windows.Forms.MouseButtons.Right)
   {
      contextMenu.Show(grdSchedules, new Point(e.Y, e.Y));      
      //Get rowindex here and select row          
   }
}

私はこのように試しました:

 private void grdSchedules_CellClick(object sender, DataGridViewCellEventArgs e)
    {
       if (e.Button == System.Windows.Forms.MouseButtons.Right) //e.Button does not work here
       {
           contextMenu.Show(grdSchedules, new Point(e.Y, e.Y));                
       }
    }        
4

3 に答える 3

1

私は解決策を見つけました。これが私がやった方法です:

        private void grdSchedules_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                int currentMouseOverRow = grdSchedules.HitTest(e.X, e.Y).RowIndex;

                for (int x = 0; x < grdSchedules.Rows.Count; x++)
                {
                    if (grdSchedules.Rows[x].Index == currentMouseOverRow)
                    {
                        grdSchedules.Rows[x].Selected = true;
                    }
                    else
                    {
                        grdSchedules.Rows[x].Selected = false;
                    }                    
                }

                contextMenu.Show(grdSchedules, new Point(e.Y, e.Y));

            }
        }
于 2013-06-20T10:27:00.030 に答える
0

orの代わりにgrdSchedules_MouseDownorgrdSchedules_MouseUpイベントを使用できました。grdSchedules_MouseClickgrdSchedules_CellClick

于 2014-03-22T01:51:36.637 に答える