C#如何在MDIParent窗体里的2个子窗体间画一条连线,连线以每个子窗体的中心为起点或结束点,当窗体拖动时连线也改变??
解决方案 »
- 如何把数据传到网上,任何一台电脑都能访问
- 打印问题
- 如何提高.NET网站性能 ?
- 有人会使用 Teechart吗
- 如何通过窗体向其所加载的动态网页进行传值?
- c#做excel打印预览,点击预览上面的"关闭",excel进程无法关闭。
- 怎样在Contextmenu中知道选择的第几个menuitem??????
- htmlinputfile问题
- (十分着急!)用streamwriter写一个htm文件用webbrowser显示,但是不能正常显示中文?
- 我引用speech框架,编译没有错,执行的时候报错!无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型。。。。。。
- 数据源的问题,用不同的配置文件.dataset
- 求解反射问题。。大虾请帮忙出点点子。。万分感谢。。(100分)
出现个问题,一个是只要有base.OnPaint(e)就会出现StackOverflowException异常,去掉的话没有线
private void MDIParentDevices_Paint(object sender, PaintEventArgs e) //窗体重绘处理
//protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
//Console.WriteLine("daomei");
DrawAllLines(e);
}
private class ControlLists
{
public IntPtr control1;
public IntPtr control2;
}
private static ArrayList DeviceDrawLines = new ArrayList();
public static void DrawAllLines(PaintEventArgs pe)
{
try
{
foreach (ControlLists one in DeviceDrawLines)
{
Control control1 = Form.FromHandle(one.control1);
Control control2 = Form.FromHandle(one.control2);
Point pta = new Point(control1.Location.X + control1.Width / 2, control1.Location.Y + control1.Height / 2);
Point ptb = new Point(control2.Location.X + control2.Width / 2, control2.Location.Y + control2.Height / 2);
Random random = new Random();
Graphics g = pe.Graphics;
Pen p = new Pen(Color.FromArgb(85, random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)), 3);
g.DrawLine(p, pta, ptb);
}
}
catch (NullReferenceException err)
{ }
{
Control control1 = Form.FromHandle(one.control1);
Control control2 = Form.FromHandle(one.control2);
Point pta = new Point(control1.Location.X + control1.Width / 2, control1.Location.Y + control1.Height / 2);
Point ptb = new Point(control2.Location.X + control2.Width / 2, control2.Location.Y + control2.Height / 2);
Random random = new Random();
Graphics g = pe.Graphics;
Pen p = new Pen(Color.FromArgb(85, random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)), 3);
g.DrawLine(p, pta, ptb);
}同意楼上