我有一个名为groupControl的usercontrol:它有两个flowlayoutpanel - 源面板和目标面板。它还有一个按钮。
我有另一个名为item的usercontrol。我将在源面板和目标面板中的M项控件中动态放置N项控件。
我希望每个项目控件和groupControl上的按钮之间有直线。
最后我有一个测试表单MainForm,它还包含一个flowlayoutpanel。我将在MainForm上动态放置X groupcontrol。
如何在每个usercontrol项和同一groupControl上的按钮之间绘制直线?
答案 0 :(得分:6)
Visual Basic Power Pack包含一个DataRepeater,以及一些包含一条线的形状(椭圆形,矩形......)。请参阅this link。
它被称为“Visual Basic”Power Pack,但它可以毫无困难地在C#项目中使用。
查看DataRepeater,它不仅可以帮助您使用自定义控件作为项目填充面板,还包含在它们之间添加一条线所需的内容。
答案 1 :(得分:3)
您必须编辑类似的内容才能符合正确的起点和终点(pt1
和pt2
),但......
FlowLayoutPanel flowLayoutPanel1;
FlowLayoutPanel flowLayoutPanel2;
private void ShippingForm_Paint(object sender, PaintEventArgs e) {
using (Graphics g = e.Graphics) {
Point pt1 = flowLayoutPanel1.Location;
Point pt2 = flowLayoutPanel2.Location;
using (Pen p = new Pen(Brushes.Black)) {
g.DrawLine(p, pt1, pt2);
}
}
}
修改强>
如果您有一个名为ShippingForm
的表单(就像我上面所做的那样),请转到GUI中表单的事件处理程序,然后双击Pant
事件以生成空方法存根。
答案 2 :(得分:0)
这实际上非常简单。您可以像使用ShapeContainer
一样使用Canvas
课程。将LineShape
的父级设置为ShapeContainer
,将ShapeContainer
的父级设置为Form
。