private void xxxxx()    //此函数是一个类的成员函数
 {
   System.Windows.Forms.RichTextBox  richTextBoxStateMessage;
   //richTextBoxStateMessage 这个临时变量用来获得tabPageConnectMessage中 
   //的RichTextBox
   foreach(System.Windows.Forms.Control control in 
                 tabPageConnectMessage.Controls)
  {
if(control is System.Windows.Forms.RichTextBox)
{
richTextBoxStateMessage= 
                      (System.Windows.Forms.RichTextBox) control;
break;
}
  }
  
  richTextBoxStateMessage.AppendText("ddddddddddddd");
 }
  如果这样写的话,理论上讲应该没错啊!

解决方案 »

  1.   

    声明变量时赋null
    System.Windows.Forms.RichTextBox  richTextBoxStateMessage=null;
    使用时判断
    if(richTextBoxStateMessage!=null)
    {
     richTextBoxStateMessage.AppendText("ddddddddddddd");
    }
      

  2.   

    richTextBoxStateMessage= 
                          (System.Windows.Forms.RichTextBox) control;
    换成
    richTextBoxStateMessage= control as (System.Windows.Forms.RichTextBox);
      

  3.   

    由于在编译的时候系统并不知道foreach循环中是否能够分配到资源,所以我才用了wzs_wzs123的方法,其实还有一个方案,
    private void xxxxx()    //此函数是一个类的成员函数
     {
       System.Windows.Forms.RichTextBox  richTextBoxStateMessage =
                          new  System.Window.Forms.RichTextBox();
       //richTextBoxStateMessage 这个临时变量用来获得tabPageConnectMessage中 
       //的RichTextBox
       foreach(System.Windows.Forms.Control control in 
                     tabPageConnectMessage.Controls)
      {
    if(control is System.Windows.Forms.RichTextBox)
    {
    richTextBoxStateMessage= 
                          (System.Windows.Forms.RichTextBox) control;
    break;
    }
      }
     }
      richTextBoxStateMessage.AppendText("ddddddddddddd");
    ...........
    } 这样的话,如果foreach中能够匹配,就会泄漏初始化的那片资源,但是C#中系统应该自动把他释放掉,这样没问题吧?