在Visual Studio c#中生成(ListView)的网格

问题描述 投票:-2回答:1

我正在尝试在C#中创建一个面板(静态),我在网格中生成多个ListViews / GridViews。

我知道如何填充单个现有的ListView。我已经在ListViews上多次这样做了,我使用工具箱拖到我的应用程序上。

我有一个sqldatabase连接,我想使用该数据库中的数据来确定将生成多少ListViews / GridViews。

I found a picture of what I am imagining in my head(Without the roomstatus)

如果生成了更多的ListViews / GridViews,我希望能够向下滚动我创建的面板。

c# visual-studio listview gridview
1个回答
-1
投票

好的,我已经成功了!

private void GenerateTable()
    {
        SomerenLogic.Room_Service roomService = new SomerenLogic.Room_Service();
        List<Room> roomList = roomService.GetRooms();

        int counter = 0;

        foreach (SomerenModel.Room s in roomList)
        {
            counter = counter + 1;
        }

        double wortelvan = Math.Sqrt(counter);
        double column = Math.Floor(wortelvan);
        double row = Math.Ceiling(wortelvan);

        int columnCount = (int)(column);
        int rowCount = (int)(row);

        SomerenLogic.Indeling_Service indelingService = new SomerenLogic.Indeling_Service();


        //Clear out the existing controls, we are generating a new table layout
        tableLayoutPanel1.Controls.Clear();
        tableLayoutPanel1.RowStyles.Clear();

        //Clear out the existing row and column styles
        tableLayoutPanel1.ColumnStyles.Clear();
        tableLayoutPanel1.RowStyles.Clear();

        //Now we will generate the table, setting up the row and column counts first
        tableLayoutPanel1.ColumnCount = columnCount;
        tableLayoutPanel1.RowCount = rowCount;



        int counter2 = 1;

        for (int x = 0; x < columnCount; x++)
        {
            //First add a column
            tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent));

            for (int y = 0; y < rowCount; y++)
            {
                //Next, add a row.  Only do this when once, when creating the first column
                if (x == 0)
                {
                    tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent));
                }

                ////Create the control, in this case we will add a button
                //Button cmd = new Button();
                //cmd.Text = string.Format("({0}, {1})", x, y);         
                ////Finally, add the control to the correct location in the table




                ListView listView1 = new ListView();
                listView1.Columns.Add("");

                listView1.View = View.Details;

                listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
                listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
                listView1.Scrollable = false;
                listView1.GridLines = true;
                listView1.AutoArrange = true;

                List<Indeling> indelingList = indelingService.GetIndeling(counter2);
                foreach (SomerenModel.Indeling s in indelingList)
                {
                    ListViewItem la = new ListViewItem("Kamer nummer: "+(s.KamerNummer).ToString());
                    listView1.Items.Add(la);
                    ListViewItem lb = new ListViewItem("Type kamer: "+(s.TypeKamer).ToString());
                    listView1.Items.Add(lb);
                    ListViewItem lc = new ListViewItem("Plekken: "+(s.AantalBedden).ToString());
                    listView1.Items.Add(lc);
                    listView1.Height = (listView1.Items.Count * 19);
                    tableLayoutPanel1.Controls.Add(listView1, x, y);

                    listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
                }

                counter2++;
            }
        }




    }
© www.soinside.com 2019 - 2024. All rights reserved.