c#对象引用未设置为对象的实例

时间:2011-05-24 14:13:47

标签: c# infopath

Infopath中的

错误:

  

对象引用未设置为对象的实例。      在InfoPathFormTemplate5.FormCode.CTRL407_5_Clicked(Object sender,ClickedEventArgs e)      在Microsoft.Office.InfoPath.Internal.ButtonEventHost.OnButtonClick(DocActionEvent pEvent)      在Microsoft.Office.Interop.InfoPath.SemiTrust._ButtonEventSink_SinkHelper.OnClick(DocActionEvent pEvent)

     VB2005中的

错误:对象引用未设置为对象的实例。   System.NullReferenceException未被用户代码处理     Message =“对象引用未设置为对象的实例。”     来源= “InfoPathFormTemplate5”     堆栈跟踪:          在InfoPathFormTemplate5.FormCode.CTRL407_5_Clicked(Object sender,ClickedEventArgs e)中的C:\ Documents and Settings \ pebabczu \ Desktop \ IntakeForm Copy \ InfoPathFormTemplate5 \ FormCode.cs:第206行          在Microsoft.Office.InfoPath.Internal.ButtonEventHost.OnButtonClick(DocActionEvent pEvent)          在Microsoft.Office.Interop.InfoPath.SemiTrust._ButtonEventSink_SinkHelper.OnClick(DocActionEvent pEvent)

代码:

string TeamL = xnMyForm.SelectSingleNode("/my:myFields/my:field149", ns).Value;
string ACC = xnMyForm.SelectSingleNode("/my:myFields/my:Bank", ns).Value;
string remarkmain = xnMyForm.SelectSingleNode("/my:myFields/my:field104", ns).Value;
string RemarkHR = xnMyForm.SelectSingleNode("/my:myFields/my:Remarks1", ns).Value;
string RemarkTL = xnMyForm.SelectSingleNode("/my:myFields/my:field55", ns).Value;
string RemarkIT = xnMyForm.SelectSingleNode("/my:myFields/my:RemarksICT", ns).Value;
string Rmain = "Remarks: " + remarkmain;
string RHR = "Remarks: " + RemarkHR;
string RTL = "Remarks: " + RemarkTL;
string RIT = "Remarks: " + RemarkIT;

我不明白......刚进入C#我做错了什么。?

4 个答案:

答案 0 :(得分:4)

好吧,你取消引用的结果是空的。

很难确切地说出哪一行代码存在问题,但你应该看看206行。我强烈怀疑SelectSingleNode正在为你的一个XPath表达式返回null - 然后您尝试访问导致异常的Value属性。

所以,你需要:

  • 找出导致问题的线路
  • 找出是因为数据错误还是您的XPath查询
  • 考虑在访问该值之前进行无效检查(如果你真的应该,总是找到一个节点,那么异常可能就是正确的方法)

答案 1 :(得分:0)

在实例化之前正在使用某些东西,或者null - 是否xnMyForm实例化了?然后,检查所有其他代码路径以确定元素是null还是返回。

答案 2 :(得分:0)

xnMyFormnull,或者您尝试选择文档中不存在的节点(使用SelectSingleNode)并调用.Value返回的null

答案 3 :(得分:0)

很可能您的一个SelectSingleNode()调用返回null,因此您无法将.Value取消。