【问题标题】:How to prevent a panel of appearing out of screen?如何防止面板出现在屏幕外?
【发布时间】:2013-02-18 15:47:19
【问题描述】:

我有一个包含数据网格视图的表单。每当用户单击一行时,该行正下方会出现一个小面板并显示一些按钮。使用下面的代码,一切都按预期工作:

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();

    }

有人可以告诉我当用户单击一行并且没有足够的空间来显示面板时如何防止面板出现在屏幕外?看看我附上的两张图片:


普通视图(当有足够的空间显示面板时,面板显示正确)

当我单击行的右侧时(并且没有足够的空间来显示面板,面板出现在屏幕外)

有人可以告诉我,即使我单击行的右侧并且没有足够的空间,因此面板位置仅限于屏幕宽度,如何才能显示整个面板?

【问题讨论】:

    标签: c# .net datagridview


    【解决方案1】:

    我知道的唯一方法是重置坐标。

    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
    

    请记住,我的代码只是伪代码,它可能无法通过简单的复制粘贴来工作。

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 1970-01-01
      • 2019-10-20
      • 2018-06-22
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      相关资源
      最近更新 更多