我有一个控件列表及其在数据表中的位置,我想通过整个数据表并设置每个控件的位置。我遇到的困难是定义我想要设置位置的控件。 例如,可以按如下方式设置控件的位置:
button1.Location = new Point(xpos, Ypos);
button2.Location = new Point(xpos, Ypos);
事情是,我不能事先对所有控件的名称进行硬编码。这是我当前使用的代码:数据表包含表单中每个控件的一行,并且有三列:控件名称,x位置和y位置。
int rowPosition = 0;
Control x;
string controlName;
int xCoord;
int yCoord;
foreach (DataRow row in dtControlPosition.Rows)
{
controlName = dtControlPosition.Rows[rowPosition]["Control"].ToString();
xCoord = Convert.ToInt32(dtControlPosition.Rows[rowPosition]["XCoord"].ToString());
yCoord = Convert.ToInt32(dtControlPosition.Rows[rowPosition]["YCoord"].ToString());
// don't have any idea what to do here:
// I tried x.Name = controlName
// x.Location = new Point(Convert.ToInt32(xCoord),Convert.toInt32(yCoord));
rowPosition = rowPosition +1;
}
当我尝试上述操作时,我收到错误“使用未分配的局部变量”x“。”
答案 0 :(得分:1)
假设表单上已经存在控件而你只想设置位置,请调用Form.ControlCollection.Find从名称中获取对控件的引用:
通过Name属性搜索控件并构建一个数组 所有匹配的控件
所以,像这样:
Control x = this.Controls.Find(controlName, true).FirstOrDefault();
if (x != null)
x.Location = new Point(xCoord, yCoord);