这是什么错???

acxcod 2003-08-02 11:10:40
以下代码(在打印机上打印),出错,不知该怎样???
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing.Printing;
using System.IO;



namespace WebApplication4
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.ComponentModel.Container components;
protected System.Web.UI.WebControls.Button Button1;
protected Font printFont;
protected StreamReader streamToPrint;

private void Page_Init(object sedner, EventArgs e)
{
InitializeComponent();
}
private void Page_Load(object sedner, EventArgs e)
{
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.Button1.Click += new stem.EventHandlerthis.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion

private void pd_printPage(object sender,PrintPageEventArgs ev)
{
float lpp =0 ;
float ypos =0;
int counter =0;
float leftMar = ev.MarginBounds.Left;
float topMar = ev.MarginBounds.Top;
string textline = null;
lpp = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics);
while (counter < lpp && ((textline=streamToPrint.ReadLine())!= null))
{
ypos = topMar+(counter * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawStringtextline,printFont,Brushes.Black,leftMar,y pos,new StringFormat());
counter++;
}
}

private void Button1_Click(object sender, System.EventArgs e)
{
try
{
StreamReader streamToPrint=new StreamReader(@"c:\abc.txt");
try
{
Font PrintFont = new Font("Arial",12);
PrintDocument pd = new PrintDocument();
pd.PrintPage+=new PrintPageEventHandler(this.pd_printPage);
pd.Print();
}
finally
{
streamToPrint.Close();
}
}
catch(Exception ex)
{
Label1.Text ="Error printing file:" + ex.ToString();
}
}

}
}


出错提示(也就是Label1.Text的内容)为:
Error printing file:System.NullReferenceException: 未将对象引用设置到对象的实例。 at WebApplication4.WebForm1.pd_printPage(Object sender, PrintPageEventArgs ev) in c:\inetpub\wwwroot\webapplication4\webform1.aspx.cs:line 68 at System.Drawing.Printing.PrintDocument.OnPrintPage(PrintPageEventArgs e) at System.Drawing.Printing.PrintDocument._OnPrintPage(PrintPageEventArgs e) at System.Drawing.Printing.PrintController.PrintLoop(PrintDocument document) at System.Drawing.Printing.PrintController.Print(PrintDocument document) at System.Drawing.Printing.PrintDocument.Print() at WebApplication4.WebForm1.Button1_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\webapplication4\webform1.aspx.cs:line 87

我刚学c#,水平有限,望高手指点!
...全文
120 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
acxcod 2003-08-03
  • 打赏
  • 举报
回复
对,就象 shixueli(渴望成功)讲的那样, 在这个函数中实例化对象,但又在那个函数中
使用(没实例化), 这个例子中有多处这样的错误,这个作者或许在出书时一定还在怀念着c++
年代的全局变量.
多谢 shixueli(渴望成功) 这样热心的高手.
shixueli 2003-08-03
  • 打赏
  • 举报
回复
很奇怪为什么你定义了
protected StreamReader streamToPrint;

在Button1_Click还要重新定义
StreamReader streamToPrint=new StreamReader(@"c:\abc.txt");

而pd_printPage()中用到的是第一个定义的那个,这是没有用new初始化的,当然出错了
acxcod 2003-08-02
  • 打赏
  • 举报
回复
应该是这一句错,但错在哪呢?
lpp = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics);
acxcod 2003-08-02
  • 打赏
  • 举报
回复
真没人知道吗?
wayneliu 2003-08-02
  • 打赏
  • 举报
回复
代码太长了,不过一般像这样的错误都是小错误!
1. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 8 2、Java有没有goto? 8 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么? short s1 = 1; s1 += 1;有什么? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最有效率的方法算出2乘以8等於几? 10 9、请设计一个一百亿的计算器 10 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 12 12、静态变量和实例变量的区别? 13 13、是否可以从一个static方法内部发出对非static方法的调用? 13 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 14 16、下面的代码有什么不妥之处? 14 17、请说出作用域public,private,protected,以及不写时的区别 14 18、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 15 19、构造器Constructor是否可被override? 16 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 16 21、写clone()方法时,通常都有一行代码,是什么? 16 22、面向对象的特征有哪些方面 17 23、java中实现多态的机制是什么? 18 24、abstract class和interface有什么区别? 18 25、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 20 26、什么是内部类?Static Nested Class 和 Inner Class的不同。 20 27、内部类可以引用它的包含类的成员吗?有没有什么限制? 22 28、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 23 29、super.getClass()方法调用 23 30、String是最基本的数据类型吗? 24 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 24 32、是否可以继承String类? 25 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 25 34、String 和StringBuffer的区别 25 35、如何把一段逗号分割的字符串转换成一个数组? 26 36、数组有没有length()这个方法? String有没有length()这个方法? 26 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 26 38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 27 39、下面的程序代码输出的结果是多少? 28 40、final, finally, finalize的区别。 30 41、运行时异常与一般异常有何异同? 30 42、error和exception有什么区别? 30 43、Java中的异常处理机制的简单原理和应用。 30 44、请写出你最常见到的5个runtime exception。 31 45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? 32 .... ....

62,256

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧