0

フォームにユーザーコントロールを動的に追加すると、正しい出力が得られました

写真

using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString))
        {
            myDatabaseConnection.Open();
            using (SqlCommand SqlCommand = new SqlCommand("Select LastName from Employee", myDatabaseConnection))
            using (SqlDataAdapter da = new SqlDataAdapter(SqlCommand))
            {

                SqlDataReader DR1 = SqlCommand.ExecuteReader();
                int y = 0;
                while (DR1.Read())
                {
                    y++;
                    for (int i = 0; i < y; i++)
                    {
                        UserControl2 userconrol = new UserControl2();
                        userconrol.Location = new Point(50, 30 * i);
                        userconrol.Tag = i;
                        userconrol.LastName = (string)DR1["LastName"];
                        this.Controls.Add(userconrol);
                    }
                }
            }
        }

しかし、flowlayoutpanel を使用してコントロールを動的に追加すると、次のようになります。 写真

using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString))
        {
            myDatabaseConnection.Open();
            using (SqlCommand SqlCommand = new SqlCommand("Select LastName from Employee", myDatabaseConnection))
            using (SqlDataAdapter da = new SqlDataAdapter(SqlCommand))
            {

                SqlDataReader DR1 = SqlCommand.ExecuteReader();
                int y = 0;
                while (DR1.Read())
                {
                    y++;
                    for (int i = 0; i < y; i++)
                    {
                        UserControl2 userconrol = new UserControl2();
                        userconrol.Tag = i;
                        userconrol.LastName = (string)DR1["LastName"];
                        flowLayoutPanel1.Controls.Add(userconrol);
                    }
                }
            }
        }

何が問題ですか ?同じループを使用していますが、flowlayoutpanel を使用してコントロールを動的に追加すると、同じ出力が表示されないのはなぜですか?

4

2 に答える 2

0
using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString))
        {
            myDatabaseConnection.Open();
            using (SqlCommand SqlCommand = new SqlCommand("Select LastName from Employee", myDatabaseConnection))
            using (SqlDataAdapter da = new SqlDataAdapter(SqlCommand))
            {
                List<string> list1 = new List<string>();
                SqlDataReader DR1 = SqlCommand.ExecuteReader();
                while (DR1.Read())
                {
                    list1.Add((string)DR1["LastName"]);
                }

                int i = 0;
                foreach (string LastName in list1)
                {
                    i++;
                    UserControl2 userconrol = new UserControl2();
                    userconrol.Tag = i;
                    userconrol.LastName = LastName;
                    flowLayoutPanel1.Controls.Add(userconrol);
                }
            }
        }
于 2013-06-04T04:02:37.470 に答える