找到记录时更改右侧面板背景
本文关键字:侧面 背景 记录 | 更新日期: 2023-09-27 18:36:12
我可以在以下问题上使用一些帮助:
我一个月中的每一天都有 31 个面板。每当当天(在数据集中)找到记录时,我想更改面板的背景。
如果你看一下代码,你可以看到我要去的地方,所有面板都需要单独指出。如果你问我,这看起来很长。我认为您需要为所有面板制作索引?
有没有其他/更好的方法可以做到这一点?如果是这样,如何?
int MaxRows;
MaxRows = ds.Tables["Dataset"].Rows.Count;
for (int i = 0; i != (MaxRows); i++)
{
DataRow dRow = ds.Tables["Dataset"].Rows[i];
if (dRow.ItemArray.GetValue(1).ToString() == "1")
{
panDay1.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "2")
{
panDay2.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "3")
{
panDay3.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "4")
{
panDay4.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "5")
{
panDay5.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "6")
{
panDay6.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "7")
{
panDay7.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "8")
{
panDay8.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "9")
{
panDay9.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "10")
{
panDay10.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "11")
{
panDay11.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "12")
{
panDay12.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "13")
{
panDay13.BackColor = Color.LightSteelBlue;
}
else if (dRow.ItemArray.GetValue(1).ToString() == "14")
{
panDay14.BackColor = Color.LightSteelBlue;
}
etc.
etc.
etc.
谁能帮帮我?
动态创建面板并将面板添加到一个父面板。为每个面板提供唯一的 ID,例如。panelDay_1,panelDay_2,panelDay_31。现在使用
//Create panels dynamically
for(int i=0;i<dataTable.Rows.Count.i++)
{
Panel p=new Panel();
p.Name="panelDay_" + i;
//Write code to set panels location and size
//Add panel to the panels parent
parentPanel.Controls.Add(p);
}
//Now access panel with the name
parentPanel.Controls["panelDay_" + i].Color=Color.Blue;
你应该制作一个包含所有 31 个面板的数组。
然后你可以写
panelArray[(int)dRow.ItemArray[i]].BackColor = Color.LightSteelBlue;
可以使用字符串为控件集合编制索引。 这允许这种语法:
for (int i = 0; i != (MaxRows); i++)
{
DataRow dRow = ds.Tables["Dataset"].Rows[i];
this.Controls["panDay" + dRow.ItemArray.GetValue(1)].BackColor = Color.LightSteelBlue;
}
哦! 实际上我认为我们也可以在不创建数组的情况下访问。如果我们观察他以顺序给出小组名称。喜欢这个
panDay1
panDay2
panDay3
.
.
panDay31.
如果是这种情况,如果我们假设控件 c 是所有面板的父级,那么我们可以使用这样的名称访问它
//Assuming form itself is the parent then
c=this;
c.Cotrols["panDay" + i].BackColor=Color.Blue;
希望对您有所帮助。