【问题标题】:Fill screen with cells in datagrid depending on size of screen根据屏幕大小用数据网格中的单元格填充屏幕
【发布时间】:2012-03-13 14:24:02
【问题描述】:

我已将 datagridview 放入我的 windows 窗体中。我测量屏幕的宽度和高度,然后在屏幕上绘制空单元格。这很好用,问题是我不知道我可以根据宽度和高度在屏幕上放置多少单元格。我得到的细胞比我应该得到的多得多。当我绘制它们时,我在屏幕右侧和底部获得的单元格数量超过了屏幕大小。

我会放一些代码,这样你就可以看到我在说什么:

public static int height= Screen.PrimaryScreen.Bounds.Height;
public static int width= Screen.PrimaryScreen.Bounds.Width;

public void draw()
{
    number_of_cells_width = width/ 5;  //I have put number 5 because I think they are 5x5 by default size
    number_of_cells_height = height / 5;
    for (int i = 0; i < number_of_cells_width ; i++)
    {
        grid.Columns.Add("", "");
    }
    for (int i = 0; i < number_of_cells_height ; i++)
    {
        grid.Rows.Add("");
    }
}

我已经放了 datagridview 来填充我的父母。 所以我得到了比我应该的更多的细胞。知道如何解决这个问题吗?

我认为应该进行一些划分。但我看不出我做错了什么。

谢谢

【问题讨论】:

  • 1. PrimatyScreen.Bounds 是包括任务栏在内的所有区域。 2. 边框尺寸小于屏幕区域。

标签: c# datagrid size scale cells


【解决方案1】:

Screen.PrimaryScreen.Bounds.Width不考虑windows标题栏等...

因此,如果您想使用此方法,则必须考虑这些元素。还是简单地获取 DataGridView 的大小,然后从那里计算?

DatagridView1.HeightDatagridView1.Width 应该会派上用场。

然后只需将代码放入正确的事件中,以便在调整窗口大小时重新调整 :)

编辑:datagridView 的事件Resize 应该适合您的需要:)

编辑 2:

foreach (DataGridViewColumn col in DataGridView1.Columns) 
{
    col.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
    col.Width = 5;
}
foreach (DataGridViewRow row in DataGridView1.Rows) 
{
    row.Height = 5;
}

下面的 sn-p 应该解析所有列和行并将它们的大小设置为 5。所以你将拥有 5*5 的单元格和不自动调整大小的列

【讨论】:

  • 我想全屏开始。例如:int a = grid.Height/5; int b = grid.Width/5; 然后我画了网格。但是屏幕没有完全填满。如何检查一个单元格的高度和宽度,以便我可以根据它进行划分。也许不是 5x5
  • 将窗体的 WindowState 更改为最大化以启动全屏
  • 默认单元格大小为height of default font plus 9 pixels x 100 pixels。它的默认行高和默认列宽。
  • 我已经最大化并且仍然有同样的东西。我认为 5x5 不是好方法。如何将单元格高度和宽度放入例如某个变量中。
  • 哦,是的,也许 5*5 不是默认大小!单元格的大小取决于很多,请确保禁用自动调整大小,并确保将宽度/高度设置为您想要的!
猜你喜欢
  • 2021-12-17
  • 2014-11-08
  • 2016-01-15
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
  • 2020-11-24
相关资源
最近更新 更多