0

datagridview を含むフォームがあります。ユーザーが行をクリックすると、行のすぐ下に小さなパネルが表示され、いくつかのボタンが表示されます。以下のコードでは、すべてが期待どおりに機能しています。

private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
    {

      rowSelected = e.RowIndex;
      columnSelected = e.ColumnIndex;

      if (e.RowIndex == -1) return;

      var cellRectangle = dataGridView1.PointToScreen(
      dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Location);
      panel_EditButtons.Location = new Point(cellRectangle.X + 50, cellRectangle.Y);

      panel_EditButtons.Show();

    }

ユーザーが行をクリックしたときに、パネルを表示するのに十分なスペースがないときに、パネルが画面外に表示されないようにする方法を教えてください。私が添付した2つの画像を見てください:


通常表示(パネルを表示する十分なスペースがある場合、パネルは正しく表示されます)

ここに画像の説明を入力

行の右側をクリックすると(パネルを表示するのに十分なスペースがなく、パネルが画面外に表示されます)
ここに画像の説明を入力

行の右側をクリックしても十分なスペースがないため、パネルの位置が画面の幅に制限されている場合でも、パネル全体を表示するにはどうすればよいですか?

4

1 に答える 1

0

私が知っている唯一の方法は、座標をリセットすることです。

if (panel_EditButtons.Location.X + panel_EditButtons.Size.X > width)
    panel_EditButtons.Location = new Point(width - panel_EditButtons.Size.X, panel_EditButtons.Location.Y);
// same with Y

私のコードは単なる擬似コードであり、単にコピーして貼り付けるだけでは機能しない可能性があることに注意してください。

于 2013-02-18T15:52:00.217 に答える