none
菜鸟:如何同时打印窗体form1中的textbox和datagridview1内容? RRS feed

  • 问题

  • 窗体form1中有textbox1 单位、textbox2 编号和datagridview1。datagridview打印的类代码已经找到,但是只能打印datagridview1里的内容。现在需要在标题中同时打印“textbox1 单位、textbox2 编号”的值。如何实现?请大虾指点。
    2012年2月6日 0:54

答案

  • 谢谢,自己解决了。引用的printdgv.cs类代码如下:

    http://read.pudn.com/downloads104/sourcecode/windows/csharp/426914/PrintDataGridView/PrintDGV.cs__.htm

    1.修改调用代码,增加textbox传入值:     

       private void button1_Click(object sender, EventArgs e)
            {
                PrintDGV.Print_DataGridView(this.dataGridView1, this.textBox1, this.textBox2);
            }

    2.修改类代码,增加接收参数和打印代码

    private static TextBox tbx11;  
    public static void Print_DataGridView(DataGridView dgv1,TextBox tbx1,TextBox tbx2);
    string tbx1value = tbx11.Text.Trim();
    e.Graphics.DrawString("单位");
    e.Graphics.DrawString(tbx1value);

    3.效果:

    • 已标记为答案 sdfr2342 2012年2月10日 2:50
    2012年2月10日 2:49

全部回复

  • 請問一下,印Form Screen是否ok呢?

    .NET 2.0 WinForm print screen

    還是您要把其他的資訊,打印在報表的Tilte呢?

    以下有相關打印的資訊,請參考

    C# WinForm开发系列 - Print


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2012年2月6日 1:38
  • Hi sdfr2342,

     

     你可以在打印时候用循环变量拼接这个数值,接着在后面增加单位!

     

     

     


    orichisonic http://blog.csdn.net/orichisonic
    2012年2月6日 1:40
  • 谢谢,参见下图。Form Screen似乎不ok。循环变量?希望给出代码。我在datagridview打印类里添加
    public string danwei = this.textBox1.Text.Trim();
    提示:
    1。关键字“this”在当前上下文中不可用
    2。DataGridViewPrint 打印类并不包含“textBox1”的定义

    2012年2月6日 3:13
  • 請問您使用printDocument物件去印表嗎?
    可以在它的PrintPage事件中去處理它哦!

    Printing of DataGridView

    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2012年2月6日 3:32
  • 是的,可以在它的PrintPage事件中去處理它哦!

    如何处理,希望提供示例代码。谢谢。
    2012年2月6日 5:18
  • 您有download那個example下來嗎?
    在PrintDocument的PrintPage中,畫出資料時,再加入您TextBox的值

     

    //Draw Columns Contents                
    foreach (DataGridViewCell Cel in GridRow.Cells)
    {
    	if (Cel.Value != null)
    	{
    		string cellValue = Cel.Value.ToString();
    		if (iCount == 1)
    		{
    			//如果是第2個欄位的話,就加上TextBox1的值
    			cellValue += " [" + this.textBox1.Text + "]";
    		}
    		e.Graphics.DrawString(cellValue, Cel.InheritedStyle.Font,
    					new SolidBrush(Cel.InheritedStyle.ForeColor),
    					new RectangleF((int)arrColumnLefts[iCount], (float)iTopMargin,
    					(int)arrColumnWidths[iCount], (float)iCellHeight), strFormat);
    	}
    	//Drawing Cells Borders 
    	e.Graphics.DrawRectangle(Pens.Black, new Rectangle((int)arrColumnLefts[iCount],
    			iTopMargin, (int)arrColumnWidths[iCount], iCellHeight));
    
    	iCount++;
    }
    


     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2012年2月6日 5:30
  • 谢谢,测试无效。实现的效果也不一样。

    string cellValue = Cel.Value.ToString();
    if (iCount == 1)
    {
    //如果是第2個欄位的話,就加上TextBox1的值
    cellValue += " [" + this.textBox1.Text + "]";
    }

    提示:
    1。关键字“this”在当前上下文中不可用
    2。DataGridViewPrint 打印类并不包含“textBox1”的定义

    打印类包含在print.cs中,在form1中调用。

    namespace DataGridViewPrint
    {

        class PrintDGV
        {

    2012年2月9日 0:59
  • 您好,感覺您會說找不到textBox1,表示您PrintDocument不是在Form上面嗎?

    請問您的程式是類似以下的範例嗎?

    Printing of DataGridView

    我是拉一個PrintDocument控制項到Form上,所以一定Access得到Form上的物件哦!


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年2月9日 8:49
  • 谢谢,自己解决了。引用的printdgv.cs类代码如下:

    http://read.pudn.com/downloads104/sourcecode/windows/csharp/426914/PrintDataGridView/PrintDGV.cs__.htm

    1.修改调用代码,增加textbox传入值:     

       private void button1_Click(object sender, EventArgs e)
            {
                PrintDGV.Print_DataGridView(this.dataGridView1, this.textBox1, this.textBox2);
            }

    2.修改类代码,增加接收参数和打印代码

    private static TextBox tbx11;  
    public static void Print_DataGridView(DataGridView dgv1,TextBox tbx1,TextBox tbx2);
    string tbx1value = tbx11.Text.Trim();
    e.Graphics.DrawString("单位");
    e.Graphics.DrawString(tbx1value);

    3.效果:

    • 已标记为答案 sdfr2342 2012年2月10日 2:50
    2012年2月10日 2:49