c#用按钮改变表单的布局

本文关键字:布局 表单 改变 按钮 | 更新日期: 2023-09-27 18:07:12

好的,我是一名计算机工程师,我是c#新手,我有一个化学项目,我们将创建一个元素周期表应用程序。问题是我如何在c#中对图片进行排序,例如,点击一下,它只会显示所有碱性金属和所有非碱性金属将消失。

我试着用已经排序的元素创建表单,点击一个按钮,让我们说"碱性金属",碱性金属表单将被显示,旧的表单将被隐藏。但是我觉得它又丑又乱。

所以我的计划是改变表单的布局只需点击一下,但我怎么做呢?

c#用按钮改变表单的布局

如果我是你,我会做一些很简单的事情,我会用所有的图片框创建元素周期表。

接下来我将添加一个布尔值到每个图片框,就像你说的是否是碱性金属等。

我不确定你是否已经完成了数组,但这将是最简单的方法来做到这一点,只是在数组中的每个bool匹配到你的表单上的每个图片框。

所以要过滤掉它们,你只需要按下一个按钮,然后通过一系列的bool,如果你看到一个被设置为碱性金属,你会离开那个图片框。Visible = enabled,如果不是,则更改picturebox。

我真的认为作为一个初级设计,这将是你能做的最好的事情,我不知道你的任何经验,但我不会去创建多个表单,我会简单地隐藏你不想看到的图片框与上面的命令。

祝你好运,让我知道你过得怎么样。

我不是专家,但是就像一些已经指出的,最好的方法是将每个元素作为表单中的pic,将它们分组在数组中,例如alkinemetals [] = {picMetal1, picMetal2,等};然后,如果用户选择非碱性金属,例如,您可以将pic属性visible设置为false:

        private void button1_Click(object sender, EventArgs e)
    {
        pictureBox1.Visible = false;
    }

要使表格看起来像一个真正的周期表,您不仅需要要显示的数据和/或图像。

您还需要存储每个元素的放置规则。

对于基本表,这些将只是行&列数字;但是对于您想要创建的更灵活的显示,您还需要更多的东西,例如group-id,最好是一个可枚举的。

要显示它们,您可以使用DataGridViewTableLayoutPanel

当切换显示时,您将清除容器并开始填充属于您希望在给定坐标显示的组的所有元素。

您应该收集ImageList中的映像,并通过将BackGroundImages分配给ImageList中的映像来创建Labels

在切换显示时,您需要遵循关于放置的额外规则吗?有一些,就我记得我的化学。

所以你应该从创建class Element开始,并给它一些属性,如int RowColumnimageIndexgroupID;然后是enum ElementGroups { AlkalineMetals, NonAlkalineMetals.. };

然后用Checkboxes为显示或隐藏的组定义布局。最后是容器,比如TableLayoutPanel,足够大,可以容纳所有元素。

另一件需要决定的事情是,您是真的想使用图片,还是更愿意从数据动态创建元素显示。它通常只需要打印2-4个字符串和一个背景颜色。这不是火箭科学画的…

你已经得到数据了吗?

当某个事件发生(点击按钮)时,您可以更改窗体的一些属性(例如宽度,高度)。这意味着您可以在单击按钮后更改表单的大小。此外,你可以在表单中有多个容器(groupbox, picturebox等),但将visible属性设置为false,当按钮被单击时将其更改为true