Controls not shown in dynamically generated panel
I want to generate same number of panels dynamically as number of distinct values are read by the sqlcommand and then display controls dynamically in the panel according to the values read by another sqlcommand, refer to code.
But the controls ie buttons are displaying only in one panel instead of all the respective panels.
Screenshot of generated result:
Why is the code not displaying controls in all the panels even though the controls are plotted in the right location?
private void show_button()
{
//InitializeComponent();
con1.con.Open();
SqlCommand cmd = new SqlCommand("select distinct floors from tbl_TableMaster", con1.con);
SqlDataReader rd = cmd.ExecuteReader();
int panelLocationX = 10;
int panelLocationY = 30;
int panelWidth = 340;
int buttonWidth = 100;
int buttonHeight = 40;
int panelHeight = 300;
while (rd.Read())
{
Panel panel = new Panel();
panel.Location = new Point(panelLocationX, panelLocationY);
panel.Size = new Size(panelWidth, panelHeight);
panel.Name = rd[0].ToString();
panel.BackColor = Color.Tan;
Label label = new Label();
label.Location = new Point(panelLocationX, panelLocationY - 20);
label.ForeColor = Color.Red;
label.Text = rd[0].ToString();
this.Controls.Add(label);
int ButtonLocationX = panelLocationX;
int ButtonLocationY = panelLocationY ;
con2.con.Open();
SqlCommand cmd1 = new SqlCommand("select TableNo,IsActive,Date from tbl_TableMaster where floors=@floor", con2.con);
cmd1.Parameters.AddWithValue("@floor", rd[0].ToString());
SqlDataReader rd1 = cmd1.ExecuteReader();
int j = 0;
while (rd1.Read())
{
if (ButtonLocationX < (panelLocationX + panelWidth-10))
{
//MessageBox.Show("Button" + ButtonLocationX + "," + ButtonLocationY + "");
if (rd1[1].ToString() == "Available")
{
Button button = new Button();
button.Click += new EventHandler(button_Click);
button.Location = new Point(ButtonLocationX, ButtonLocationY);
button.Text = rd1[0].ToString();
button.BackColor = Color.Turquoise;
button.Tag = j;
button.Size = new System.Drawing.Size(buttonWidth,buttonHeight);
button.Font = new Font("Microsoft Sans Serif", 12, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
panel.Controls.Add(button);
//button.Visible = true;
button.BringToFront();
button.FlatStyle = FlatStyle.Popup;
}
if (rd1[1].ToString() == "Order Running")
{
listBox1.Visible = false;
Button button = new Button();
button.Click += new EventHandler(button_Click);
button.Location = new Point(ButtonLocationX, ButtonLocationY);
System.TimeSpan diff2 = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss")) - Convert.ToDateTime(rd1[2].ToString());
button.Text = Convert.ToString(rd1[0].ToString() + "nn . " + Convert.ToString(diff2));
button.Text = rd1[1].ToString();
button.BackColor = Color.Crimson;
button.Tag = j;
button.Size = new System.Drawing.Size(buttonWidth,buttonHeight);
button.ForeColor = Color.Black;
button.Font = new Font("Microsoft Sans Serif", 7, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
Bitmap bmp = new Bitmap(button.ClientRectangle.Width, button.ClientRectangle.Height);
using (Graphics G = Graphics.FromImage(bmp))
{
G.Clear(button.BackColor);
string line1 = rd1[0].ToString();
string line2 = "nn ." + diff2.ToString();
StringFormat SF = new StringFormat();
SF.Alignment = StringAlignment.Center;
SF.LineAlignment = StringAlignment.Near;
using (Font arial = new Font("Microsoft Sans Serif", 15))
{
Rectangle RC = button.ClientRectangle;
RC.Inflate(-5, -5);
G.DrawString(line1, arial, Brushes.White, RC, SF);
}
using (Font courier = new Font("Microsoft Sans Serif", 10))
{
SF.LineAlignment = StringAlignment.Center;
G.DrawString(line2, courier, Brushes.Black, button.ClientRectangle, SF);
}
}
button.Image = bmp;
button.ImageAlign = ContentAlignment.MiddleCenter;
button.ForeColor = Color.Crimson;
panel.Controls.Add(button);
//button.Visible = true;
//button.BringToFront();
button.FlatStyle = FlatStyle.Popup;
}
if (rd1[1].ToString() == "Hold")
{
Button button = new Button();
button.Click += new EventHandler(button_Click);
button.Location = new Point(ButtonLocationX, ButtonLocationY);
button.Text = rd1[0].ToString();
button.BackColor = Color.Yellow;
button.Tag = j;
button.Size = new System.Drawing.Size(ButtonLocationX, ButtonLocationY);
button.Font = new Font("Microsoft Sans Serif", 13, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
panel.Controls.Add(button);
//button.Visible = true;
button.BringToFront();
button.FlatStyle = FlatStyle.Popup;
}
if (rd1[1].ToString() == "Amount")
{
Button button = new Button();
button.Click += new EventHandler(button_Click);
button.Location = new Point(ButtonLocationX, ButtonLocationY);
button.Text = rd1[0].ToString();
button.BackColor = Color.DarkGray;
button.Tag = j;
button.Size = new System.Drawing.Size(ButtonLocationX, ButtonLocationY);
button.Font = new Font("Microsoft Sans Serif", 13, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
panel.Controls.Add(button);
//button.Visible = true;
//button.BringToFront();
button.FlatStyle = FlatStyle.Popup;
}
ButtonLocationX = ButtonLocationX + buttonWidth + 10;
count = count + 1;
j++;
}
else
{
ButtonLocationY = ButtonLocationY + buttonHeight+10;
ButtonLocationX = panelLocationX;
if (panelHeight < ButtonLocationY)
{
panel.AutoScroll = false;
panel.HorizontalScroll.Enabled = false;
panel.HorizontalScroll.Visible = false;
panel.HorizontalScroll.Maximum = 0;
panel.AutoScroll = true;
}
else
{
}
if (rd1[1].ToString() == "Available")
{
Button button = new Button();
button.Click += new EventHandler(button_Click);
button.Location = new Point(ButtonLocationX, ButtonLocationY);
button.Text = rd1[0].ToString();
button.BackColor = Color.Turquoise;
button.Tag = j;
button.Size = new System.Drawing.Size(buttonWidth, buttonHeight);
button.Font = new Font("Microsoft Sans Serif", 12, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
panel.Controls.Add(button);
//button.Visible = true;
//button.BringToFront();
button.FlatStyle = FlatStyle.Popup;
}
if (rd1[1].ToString() == "Order Running")
{
listBox1.Visible = false;
Button button = new Button();
button.Click += new EventHandler(button_Click);
button.Location = new Point(ButtonLocationX, ButtonLocationY);
System.TimeSpan diff2 = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss")) - Convert.ToDateTime(rd1[2].ToString());
button.Text = Convert.ToString(rd1[0].ToString() + "nn . " + Convert.ToString(diff2));
button.Text = rd1[1].ToString();
button.BackColor = Color.Crimson;
button.Tag = j;
button.Size = new System.Drawing.Size(buttonWidth, buttonHeight);
button.ForeColor = Color.Black;
button.Font = new Font("Microsoft Sans Serif", 7, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
Bitmap bmp = new Bitmap(button.ClientRectangle.Width, button.ClientRectangle.Height);
using (Graphics G = Graphics.FromImage(bmp))
{
G.Clear(button.BackColor);
string line1 = rd1[0].ToString();
string line2 = "nn ." + diff2.ToString();
StringFormat SF = new StringFormat();
SF.Alignment = StringAlignment.Center;
SF.LineAlignment = StringAlignment.Near;
using (Font arial = new Font("Microsoft Sans Serif", 15))
{
Rectangle RC = button.ClientRectangle;
RC.Inflate(-5, -5);
G.DrawString(line1, arial, Brushes.White, RC, SF);
}
using (Font courier = new Font("Microsoft Sans Serif", 10))
{
SF.LineAlignment = StringAlignment.Center;
G.DrawString(line2, courier, Brushes.Black, button.ClientRectangle, SF);
}
}
button.Image = bmp;
button.ImageAlign = ContentAlignment.MiddleCenter;
button.ForeColor = Color.Crimson;
panel.Controls.Add(button);
//button.Visible = true;
//button.BringToFront();
button.FlatStyle = FlatStyle.Popup;
}
if (rd1[1].ToString() == "Hold")
{
Button button = new Button();
button.Click += new EventHandler(button_Click);
button.Location = new Point(ButtonLocationX, ButtonLocationY);
button.Text = rd1[0].ToString();
button.BackColor = Color.Yellow;
button.Tag = j;
button.Size = new System.Drawing.Size(ButtonLocationX, ButtonLocationY);
button.Font = new Font("Microsoft Sans Serif", 13, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
panel.Controls.Add(button);
//button.Visible = true;
//button.BringToFront();
button.FlatStyle = FlatStyle.Popup;
}
if (rd1[1].ToString() == "Amount")
{
Button button = new Button();
button.Click += new EventHandler(button_Click);
button.Location = new Point(ButtonLocationX, ButtonLocationY);
button.Text = rd1[0].ToString();
button.BackColor = Color.DarkGray;
button.Tag = j;
button.Size = new System.Drawing.Size(ButtonLocationX, ButtonLocationY);
button.Font = new Font("Microsoft Sans Serif", 13, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
panel.Controls.Add(button);
//button.Visible = true;
//button.BringToFront();
button.FlatStyle = FlatStyle.Popup;
}
j++;
count = count + 1;
//if (panelHeight < 500)
//{
//panelHeight = panelHeight + 60;
////}
////else
////{
//// bar.Visible = true;
//// panel.Controls.Add(bar);
////}
//panel.Size = new Size(panelWidth, panelHeight);
//ButtonLocationY = ButtonLocationY + buttonHeight + 10;
//ButtonLocationX = panelLocationX + 10;
//Button button = new Button();
//button.Location = new Point(ButtonLocationX, ButtonLocationY);
//this.Controls.Add(button);
//button.BringToFront();
////MessageBox.Show("Button" + ButtonLocationX + "," + ButtonLocationY + "");
//button.Size = new Size(buttonWidth, buttonHeight);
//button.Name = rd1[0].ToString();
//button.Text = rd1[0].ToString();
//button.BackColor = Color.Brown;
ButtonLocationX = ButtonLocationX + buttonWidth + 10;
}
}
this.Controls.Add(panel);
con2.con.Close();
panelLocationX = panelLocationX + panelWidth + 50;
}
con1.con.Close();
}
链接地址: http://www.djcxy.com/p/61578.html
上一篇: Ember.js +把手定制助手
下一篇: 控件未在动态生成的面板中显示