可以呀。用datagrid,另外绑定数据库。

解决方案 »

  1.   

    void DrawForm(Graphics g, int resX, int resY)
    {
      g.FillRectangle(new SolidBrush(this.BackColor), 0, 0, this.Width, this.Height);
      float scale = resX/ScreenResolution; 
    //  Cycle through each control on the form and paint it to the printe
      foreach (Control c in Controls)
       {//  Get the time of the next control so we can unbox it
         string strType = c.GetType().ToString().Substring(c.GetType().ToString().LastIndexOf(".") + 1);
         switch (strType)
          {
             case "Button":
               Button b = (Button)c;//  Use the ControlPaint method DrawButton in order to draw the button of the form
              ControlPaint.DrawButton(g, ((Button)c).Left, ((Button)c).Top, ((Button)c).Width, ((Button)c).Height, ButtonState.Normal);//  We also need to draw the text
                 g.DrawString(b.Text, b.Font, new SolidBrush(b.ForeColor), 
                    b.Left + b.Width/2 - g.MeasureString(b.Text, 
                    b.Font).Width/2, b.Top + b.Height/2 - g.MeasureString("a", b.Font).Height/2, 
                    new StringFormat());break;case "TextBox":TextBox t = (TextBox)c;//  Draw a text box by drawing a pushed in button and filling the rectangle with the background color and the text
    //  of the TextBox control// First the sunken border
          ControlPaint.DrawButton(g, t.Left, t.Top, t.Width, t.Height, ButtonState.Pushed );//  Then fill it with the background of the textbox
           g.FillRectangle(new SolidBrush(t.BackColor), t.Left+1, t.Top + 1, t.Width+2, t.Height -2);// Finally draw the string inside
             g.DrawString(t.Text, t.Font, new SolidBrush(t.ForeColor), t.Left + 2, 
                 t.Top + t.Height/2 - g.MeasureString("a", t.Font).Height/2, new StringFormat());break;case "CheckBox"://  We have a checkbox to paint, unbox it   CheckBox cb = (CheckBox)c;//  Use the DrawCheckBox command to draw a checkbox and pass the button state to paint it checked or unchecked
       if (cb.Checked)
           ControlPaint.DrawCheckBox(g, cb.Left, cb.Top, cb.Height/2, cb.Height/2, ButtonState.Checked);
       else
           ControlPaint.DrawCheckBox(g, cb.Left, cb.Top, cb.Height/2, cb.Height/2, ButtonState.Normal);//  Don't forget the checkbox text
      g.DrawString(cb.Text, cb.Font, new SolidBrush(cb.ForeColor), cb.Right -cb.Height - g.MeasureString(cb.Text, cb.Font).Width ,
            cb.Top, new StringFormat());    break;    }
      }}
      

  2.   

    cyp503(谁怕?一蓑烟雨任平生) 的代码感觉是在重绘而不是打印:(
      

  3.   

    你可以只打印内容呀// Finally draw the string inside
             g.DrawString(t.Text, t.Font, new SolidBrush(t.ForeColor), t.Left + 2, 
                 t.Top + t.Height/2 - g.MeasureString("a", t.Font).Height/2, new StringFormat());t.Text为textbox的内容
      

  4.   

    看看这个是否对你有所帮助。
    将打印内容输入到richtextbox中,就打印
    http://support.microsoft.com/default.aspx?scid=kb;en-us;812425