2013-03-04 93 views
0

這些代碼行導致我的用戶控件在設計器中返回提到的錯誤。
我在這裏錯過了什麼?值不能爲空,參數名稱子或後代

private void renewContext() 
    { 
     if (context != null) 
     { 
      context.Dispose(); 
      context = new SM_Context(); 
     } 
     else 
     { 
      context = new SM_Context(); 
     } 
    } 
    private void tabPasswords_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (e.Source is TabControl) 
     { 
      TabControl tab = (TabControl)e.Source; 
      switch (tab.SelectedIndex) 
      { 
       default: 
        break; 
       case 0: 
        btnAP_Reset_Click(null, null); 
        btnEP_Reset_Click(null, null); 
        break; 
       case 1: 
        btnEP_Reset_Click(null, null); 
        break; 
       case 2: 
        btnAP_Reset_Click(null, null); 
        headEditPassword_Loaded(null, null); 
        break; 
      } 
     } 
    } 

問題是不是按鈕,我敢肯定,問題是隻與上下文。
出於某些安全原因,選項卡更改不會允許我更新其中的上下文。
那我該如何做到這一點?

+1

你想在這裏實現什麼?你可以提供更多解釋嗎? – 2013-03-04 13:03:11

+2

而不是'btnAP_Reset_Click(null,null)'將句柄體抽取到單獨的方法中並調用該方法。傳遞空值很奇怪! – 2013-03-04 13:03:17

+0

learningbycode im試着重置每個選項卡的上下文。 – 2013-03-04 13:04:50

回答

0

由於lazyberezovsky建議作爲評論:嘗試從事件處理程序(btnAP_Reset_Click等)提取您想要執行的邏輯。它看起來是這樣的:

private void tabPasswords_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (e.Source is TabControl) 
    { 
     TabControl tab = (TabControl)e.Source; 
     switch (tab.SelectedIndex) 
     { 
      default: 
       break; 
      case 0: 
       context = new SM_Context(); 
       ResetAp(); 
       ResetEp(); 
       break; 
      case 1: 
       context = new SM_Context(); 
       ResetEp(); 
       break; 
      case 2: 
       context = new SM_Context(); 
       ResetAp(); 
       WhatEverThisDoes(); 
       break; 
     } 
    } 
} 

private void ResetAp() 
{ 
    // ... 
} 

private void ResetEp() 
{ 
    // ... 
} 

private void WhatEverThisDoes() 
{ 
    // ... 
} 

private void btnAP_Reset(object sender, EventArgs e) 
{ 
    ResetAp(); 
} 

private void btnEP_Reset(object sender, EventArgs e) 
{ 
    ResetEp(); 
} 

private void headEditPassword_Loaded(object sender, EventArgs e) 
{ 
    WhatEverThisDoes(); 
} 
+0

問題不是按鈕,它不正確的發送空引用,但只要im控制方法其確定。 – 2013-03-04 13:35:12

+0

@MehdiGhanavatian您添加了一行處理上下文字段的代碼。這是你的高效代碼嗎?如果上下文爲空,這可能會失敗。 – MatthiasG 2013-03-04 13:59:17

+0

sry我改變了這種方法來控制處置。 現在使用的問題是在Tab Changed Event中調用該方法。 – 2013-03-04 14:03:16

0

你應該麗森是誰寫關於這個問題的一些意見的人 - 但如果你是determinded使用點擊一個按鈕 - 你可以稱之爲button.PerformClick()

看起來會像這樣:

btnAP_Reset.PerformClick(); 

這不會將nullvalues作爲參數發送給您的click事件實現。

+0

問題不在於按鈕,它不正確的發送null引用,但只要im控制方法正常。 – 2013-03-04 13:34:36

相關問題