Graphics g = this.panel1.CreateGraphics();
            Pen pen = new Pen(Color.Red,2);
            Point oldPoint = new Point();
            oldPoint.X = oldbtn.Location.X + oldbtn.Width;
            oldPoint.Y = oldbtn.Location.Y + oldbtn.Height / 2;
            Point newPoint = new Point();
            newPoint.X = newbtn.Location.X;
            newPoint.Y = newbtn.Location.Y + oldbtn.Height / 2;
            g.DrawLine(pen, newPoint, oldPoint);
为两个控件之间画上线  失去焦点后 线消失了  请问这个怎么解决呢?

解决方案 »

  1.   

    1 放到Paint里
     private void Form1_Paint(object sender, PaintEventArgs e)
            {        }2 或则你绘制到图片上贴背景图.
      

  2.   

    把做图的语句放到OnPaint里
       protected override void OnPaint( PaintEventArgs e )
        {
      

  3.   


            public Form2()
            {
                InitializeComponent();
                this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form2Paint);
            }        private void Form2Paint(object sender, PaintEventArgs e)
            {
                Graphics g = this.panel1.CreateGraphics(); 
                Pen pen = new Pen(Color.Red,2); 
                Point oldPoint = new Point(); 
                oldPoint.X = oldbtn.Location.X + oldbtn.Width; 
                oldPoint.Y = oldbtn.Location.Y + oldbtn.Height / 2; 
                Point newPoint = new Point(); 
                newPoint.X = newbtn.Location.X; 
                newPoint.Y = newbtn.Location.Y + oldbtn.Height / 2; 
                g.DrawLine(pen, newPoint, oldPoint);         } 
      

  4.   

    为两个控件之间画上线  失去焦点后 线消失了
    -------------------------------------
    因为控件失去焦点,会刷新。如果你的画线操作没有和刷新挂勾的话,之前的线就不再出现。可以使用panel.OnPaint事件。