看到很多同类的帖子,我还是没解决我的问题。
我想做的是初始化的时候一个直线(由SizeLine类实现),单击界面上的一个LinkButton产生(显示)一个新的直线
 public partial class SizeLoad : UserControl
    {
       
        private SizeLine line1;//我自定义的类
        public SizeLoad()
        {
            InitializeComponent();
            line1 = new SizeLine(this.Width,this.Height);
        }        private void SizeLoad_Paint(object sender, PaintEventArgs e)
        {
            //LineDisplay的原型如下
           // public void LineDisplay(PaintEventArgs e)
           // {
           // this.OnPaint(e);
           // }
            line1.LineDisplay(e);
        }        private void llAddline_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//LinkButton的单击事件方法
        {
            this.Height+=100;
            SizeLine addline = new SizeLine(this.Width, this.Height);
            addline.LineDisplay(e);//参数如何处理,它不是PaintEventArgs类型的
        }我是新手,请高手们多多指教,写些详细的代码,不胜感谢。

解决方案 »

  1.   

    private void llAddline_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//LinkButton的单击事件方法 
            { 
                this.Height+=100; 
                SizeLine addline = new SizeLine(this.Width, this.Height); 
                PaintEventArgs me=new PaintEventArgs();
    //            me.ClipRectangle=你想设置区域
                   me.Graphics=this.CreateGraphics();
                addline.LineDisplay(me);//参数如何处理,它不是PaintEventArgs类型的 
            } 
      

  2.   


     private void Form1_Load(object sender, EventArgs e)
            {
                objDocument = new PrintDocument();
                //当需要为当前页打印的输出时发生 
                objDocument.PrintPage += new PrintPageEventHandler(objDocument_PrintPage);
            }        void objDocument_PrintPage(object sender, PrintPageEventArgs e)
            {
               string objString = this.textBox1.Text;
                //获取用于绘制页面的Graphics的对象 
                Graphics g = e.Graphics;
                //向页面输出一行文字 
                g.DrawString(objString, f.Font, new SolidBrush(color.Color), new RectangleF(0, 200, textBox1.Width, textBox1.Height));
                g.DrawString(objString, f.Font, new SolidBrush(f.Color), new PointF(30,30));
                //画一个矩形框
                g.DrawRectangle(new Pen(color.Color,2),200,200,200,200);
            }
      

  3.   

    to llszn:
     me.ClipRectangle=你想设置区域
     如何获得当前窗口(控件)的区域?
      

  4.   

    如果是需要重绘的话,没有那么麻烦:
    userControl1.Invalidate();
    使其表面无效,然后Windows自动地触发它的Paint事件。
      

  5.   

    userControl1.Invalidate(true);
    可以强制连子控件一起重绘。
      

  6.   

    to robin521:
    新建方法的参数不好弄。
      

  7.   

    to dancingbit
    new一个新的实例然后用userControl1.Invalidate(); 
    能paint2个实例?
      

  8.   

    new的时候,保存需要绘制的数据,然后在绘制代码中按照绘制数据逐一绘制。