为什么我觉得特别慢的呢
int tiaoshu = 1, i = 1, j = 0, gao = 0, kuan = 0, ding = 0, zuo = 0;
public void hjlabel(string wenben)
{
Label hj = new Label();
hj.Height = gao;
hj.Width = kuan;
hj.Left = zuo;
hj.Top = ding;
hj.TextAlign = ContentAlignment.MiddleLeft;
if (j == 1)
{
hj.BackColor = SystemColors.Control;
}
else
{
hj.BackColor = Color.White;
}
hj.Text = wenben;
tabPage1.Controls.Add(hj);
}
public void jianbiao()
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\xxxx.mdb");
string sql = "SELECT * FROM xxxx";
OleDbCommand cmd = new OleDbCommand(sql, conn);
conn.Open();
cmd.ExecuteScalar();
OleDbDataReader reader = cmd.ExecuteReader();
gao = 24;
kuan = 30;
hjlabel("序号");
zuo = kuan;
kuan = 160;
hjlabel("内容");
zuo += kuan;
kuan = 78;
hjlabel("时间");
while (reader.Read())
{
tiaoshu++;
if (j == 1)
{ j = 0; }
else { j = 1; }
kuan = 30;
zuo = 0;
ding = 24 * i;
hjlabel(Convert.ToString(i));
zuo = kuan;
kuan = 160;
hjlabel(reader["neirong"].ToString());
zuo += kuan;
kuan = 78;
hjlabel(Convert.ToString(reader["shijian"]));
i++;
}
this.Text = "你的数据库有" + (tiaoshu - 1) + "条数据";
reader.Close();
conn.Close();
}
请各位高手帮我分析一下我这么做是不是效率降低了,如何才能提高效率
int tiaoshu = 1, i = 1, j = 0, gao = 0, kuan = 0, ding = 0, zuo = 0;
public void hjlabel(string wenben)
{
Label hj = new Label();
hj.Height = gao;
hj.Width = kuan;
hj.Left = zuo;
hj.Top = ding;
hj.TextAlign = ContentAlignment.MiddleLeft;
if (j == 1)
{
hj.BackColor = SystemColors.Control;
}
else
{
hj.BackColor = Color.White;
}
hj.Text = wenben;
tabPage1.Controls.Add(hj);
}
public void jianbiao()
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\xxxx.mdb");
string sql = "SELECT * FROM xxxx";
OleDbCommand cmd = new OleDbCommand(sql, conn);
conn.Open();
cmd.ExecuteScalar();
OleDbDataReader reader = cmd.ExecuteReader();
gao = 24;
kuan = 30;
hjlabel("序号");
zuo = kuan;
kuan = 160;
hjlabel("内容");
zuo += kuan;
kuan = 78;
hjlabel("时间");
while (reader.Read())
{
tiaoshu++;
if (j == 1)
{ j = 0; }
else { j = 1; }
kuan = 30;
zuo = 0;
ding = 24 * i;
hjlabel(Convert.ToString(i));
zuo = kuan;
kuan = 160;
hjlabel(reader["neirong"].ToString());
zuo += kuan;
kuan = 78;
hjlabel(Convert.ToString(reader["shijian"]));
i++;
}
this.Text = "你的数据库有" + (tiaoshu - 1) + "条数据";
reader.Close();
conn.Close();
}
请各位高手帮我分析一下我这么做是不是效率降低了,如何才能提高效率
{ j = 0; }
else { j = 1; }
用个报表一下子就显示了。写那么多做什么?
Label[] arrLabel = new Label[RowsCount * ColumnsCount];
this.panel1.SuspendLayout();
//..
panel.Controls.AddRange(arrLabel);
this.panel1.ResumeLayout();
动态添加label
还有panel.Controls.AddRange(arrLabel)中的arrLabel是不是不能为二维数组啊,设置成二维数组就出错,只能用一维数组的话就需要在panel里面嵌label,好像也很慢了啊
int[] kuan ={ 30, 160, 78 };
int[] zuo ={ 0, 30, 190 };
private void Form1_Load(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\xxxx.mdb");
string sql = "SELECT * FROM xxxx WHERE (shifou = 0)";
OleDbCommand cmd = new OleDbCommand(sql, conn);
conn.Open();
cmd.ExecuteScalar();
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
renwutiaoshu++;
}
OleDbDataAdapter oda = new OleDbDataAdapter();
oda.SelectCommand = new OleDbCommand(sql, conn);
DataSet ds = new DataSet();
oda.Fill(ds, "xxxx"); this.DoubleBuffered = true;
Label[,] lbl = new Label[ tiaoshu,3];
Label[] hjlbl = new Label[3 * tiaoshu];
//tabPage1.SuspendLayout;
for (int i = 0; i <tiaoshu; i++)
{
for (int j = 0; j < 3; j++)
{
lbl[i, j] = new Label();
lbl[i, j].Height = 24;
lbl[i, j].Width = kuan[j];
lbl[i, j].TextAlign = ContentAlignment.MiddleLeft;
lbl[i, j].Location = new Point(zuo[j], i * 24);
if (i % 2 == 0)
{
lbl[i, j].BackColor = SystemColors.Control;
}
else
{
lbl[i, j].BackColor = Color.White;
}
lbl[i, j].Text = Convert.ToString(ds.Tables[0].Rows[i].ItemArray.GetValue(j));
hjlbl[k] = lbl[i, j];
k++;
}
} tabPage1.Controls.AddRange(hjlbl);
//tabPage1.ResumeLayout();
this.Text = "数据库有" + tiaoshu + "条记录";
reader.Close();
conn.Close();
}