我有一个非常简单的rectangluar WinForm,它使用计时器来检查许多文件的最终内容。工作正常。
现在,要检查的文件列表是动态的。可能是3.可能是30.它取决于数据库中的某些值,我定期检查。那也没关系。
我想做的就是在我的winform上直观地看待它。对于每个文件,都有一个红色圆圈。当文件被“检查”时,将该圆圈显示为绿色。一旦完成,再次变红。
干杯!
答案 0 :(得分:9)
Controls
集合(例如表单)。您可以(a)根据添加的最后一个控件手动计算每个新控件的坐标,或者(b)将它们放在FlowLayoutPanel
内。Graphics
对象自行绘制。答案 1 :(得分:1)
是的,只需创建控件(新)并将其添加到表单中。请参阅此处link以及示例或两个。
你们其他人的问题非常开放 - 有很多方法可以做你想做的事。
答案 2 :(得分:1)
实现自定义控件并执行以下操作:
SuspendLayout();
MyCircleControl circle = new MyCircleControl ();
// Set properties
circle.Location = new Point(0,0);
circle.Color = Color.Red;
Controls.Add(circle );
ResumeLayout(false);
这实际上是设计师正在做的事情。看一下Designer.cs文件。
答案 3 :(得分:1)
在这种情况下,我创建了一个“模型”控件,它具有您要添加的控件的所有属性。例如,红点,其大小和其他属性已设置。然后将其设置为不可见或使其不可见。然后,当您需要动态创建控件时,克隆该模型控件,并设置其位置(并在需要时使其可见),然后将其添加到窗体控件集合
答案 4 :(得分:0)
由于你说文件列表无论如何都保存在数据库中,我会在设计模式下向表单添加一个datagridview。这个dgv将使用带有文件的表作为其数据源,从而动态创建行。我还要向dgv或表本身添加一列,以保存文件是否被读取的布尔/位。然后,这将显示为dgv中的列。从那里你将获得正在读取的文件的dgv行,并将布尔列的图像更改为您在您喜欢的图像编辑器中创建的绿色或红色圆圈。