如何在用户控件中的两个控件之间绘制直线?

时间:2011-04-05 19:38:59

标签: c# winforms user-controls line draw

我有一个名为groupControl的usercontrol:它有两个flowlayoutpanel - 源面板和目标面板。它还有一个按钮。

我有另一个名为item的usercontrol。我将在源面板和目标面板中的M项控件中动态放置N项控件。

我希望每个项目控件和groupControl上的按钮之间有直线。

最后我有一个测试表单MainForm,它还包含一个flowlayoutpanel。我将在MainForm上动态放置X groupcontrol。

如何在每个usercontrol项和同一groupControl上的按钮之间绘制直线?

3 个答案:

答案 0 :(得分:6)

Visual Basic Power Pack包含一个DataRepeater,以及一些包含一条线的形状(椭圆形,矩形......)。请参阅this link

它被称为“Visual Basic”Power Pack,但它可以毫无困难地在C#项目中使用。

查看DataRepeater,它不仅可以帮助您使用自定义控件作为项目填充面板,还包含在它们之间添加一条线所需的内容。

答案 1 :(得分:3)

您必须编辑类似的内容才能符合正确的起点和终点(pt1pt2),但......

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事件以生成空方法存根。 VS's GUI of Form

答案 2 :(得分:0)

这实际上非常简单。您可以像使用ShapeContainer一样使用Canvas课程。将LineShape的父级设置为ShapeContainer,将ShapeContainer的父级设置为Form