2015-12-16 61 views
-1

我想將一些代碼放在另一個.cs文件中,因爲我使用了 一個巨大的switch語句,我不希望人們通過它來了解了解正在發生的事情。問題是描述在我的應用程序中寫入的文本框的txtresponse 命令不是在新文件中定義的 ,我無法弄清楚原因。這是我的新 文件:鏈接我的.cs文件

(Error: txtresponse does not exist in this current context)

附:只使用System.Windows.Forms;突出顯示它擁有所有的應用形式, 按鈕和他們做什麼等等......

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace GUI_Verify 
{ 
    class commands : Form 
    { 
     public static string call_command(string stmnt) 
     { 
      string cmd = ""; 
      switch (stmnt) 
      { 
       case "TST_ALL": 
        txtresponse.Text = "\r\nTesting all memory tests.\r\n"; 
        cmd = "1"; 
        break; 
       case "TST_PKT_BFFR": 
        txtResponse.Text = "\r\nTest for Packet Buffer.\r\n"; 
        cmd = "2"; 
        break; 
       case "TST_XDATA": 
        txtResponse.Text = "\r\nTest for XDATA.\r\n"; 
        cmd = "3"; 
        break; 
       case "TST_REN_RAM": 
        txtResponse.Text = "\r\nTest for Retention Ram.\r\n"; 
        cmd = "4"; 
        break; 
       case "TST_CODE_RAM": 
        txtResponse.Text = "\r\nTest for Code Ram.\r\n"; 
        cmd = "5"; 
        break; 
       case "Copy_All": 
        txtResponse.Text = "\r\nCopying all memory to all places.\r\n"; 
        cmd = "6"; 
        break; 
       case "to_xdata": 
        txtResponse.Text = "\r\nCopying xdata -> xdata.\r\n"; 
        cmd = "7"; 
        break; 
       default: 
        txtResponse.Text = "\r\nunknown command\r\n"; 
        break; 
      } 
      return cmd; 
     } 
    } 
} 
+0

您正在繼承通用表單,而不是包含該文本框的表單。 –

+3

如果所有switch語句都將某些字符串映射到整數,則應該使用字典來查看 –

+0

您確定要讓call_command爲靜態嗎? –

回答

-1

我有這個問題的某個時候回來。首先評論你的代碼並刪除表單中的txtresponse文本框。然後拖放n從工具箱中拖放一個新的文本框,並將其重命名爲「txtresponse」。取消註釋您的代碼,並希望它能正常工作。

更新:

這僅僅是一種替代方法的建議。無需繼承Form類

使用輸出參數來保存文本框的值。

namespace GUI_Verify 
{ 
    public class commands 
    { 
     public static string call_command(string stmnt, out string result) 
     { 
      string cmd = ""; 
      switch (stmnt) 
      { 
       case "TST_ALL": 
        result = "\r\nTesting all memory tests.\r\n"; 
        cmd = "1"; 
        break; 
       case "TST_PKT_BFFR": 
        result = "\r\nTest for Packet Buffer.\r\n"; 
        cmd = "2"; 
        break; 
       case "TST_XDATA": 
        result = "\r\nTest for XDATA.\r\n"; 
        cmd = "3"; 
        break; 
       case "TST_REN_RAM": 
        result = "\r\nTest for Retention Ram.\r\n"; 
        cmd = "4"; 
        break; 
       case "TST_CODE_RAM": 
        result = "\r\nTest for Code Ram.\r\n"; 
        cmd = "5"; 
        break; 
       case "Copy_All": 
        result = "\r\nCopying all memory to all places.\r\n"; 
        cmd = "6"; 
        break; 
       case "to_xdata": 
        result = "\r\nCopying xdata -> xdata.\r\n"; 
        cmd = "7"; 
        break; 
       default: 
        result = "\r\nunknown command\r\n"; 
        break; 
      } 
      return cmd; 
     } 

    } 
} 

在您的表單中執行以下操作。

string result=""; 
string cmd = commands.call_command("TST_ALL", out result); 
txtresponse.Text = result; 
+0

迄今爲止,這一直非常不成功。 – Fliko

+0

我做了什麼創建這個文件是添加一個新的CS文件,然後寫在代碼中,我做了第一個人說的改變,因爲他是對的,但沒有幫助。我也嘗試重做文本框,但沒有運氣。有什麼我需要做的 – Fliko

+0

@Fliko看到更新 – chamara