2013-10-01 62 views
0

我剛剛嘗試了所有內容,沒有任何內容能夠正常工作。已經創建了一個新類,並將其中的所有編碼設置在此處,並嘗試從我的form1.cs中調用公共方法,但在我的class1中,我的文本框1和發件人處於紅色書寫狀態。無法將文本框從課程鏈接到主表格

代碼Form1.cs的

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    string text; 
    double operand_1, operand_2, solution; 
    char Operator; 

    #region Form Code 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     operand_1 = operand_2 = solution = 0; 
     text = "0"; 
     Operator = '='; 
    } 
    #endregion 

    #region Number Buttons 
    private void numbers_Click(object sender, EventArgs e) 
    { 
     Class1 cls = new Class1(); 
     cls.Numbers(textBox1.Text); 
    } 
    #endregion 

    #region Operator Buttons 
    private void operators_Click(object sender, EventArgs e) 
    { 
     Class1 cls1 = new Class1(); 
     cls1.Operations(); 
    } 
    #endregion 
} 

那麼這裏就是我對我的編碼爲我的Class1編碼:

public class Class1 
{ 
    string text; 
    double operand_1, operand_2, solution; 
    char Operator; 

    public void Numbers(string text) 
    { 
     Button button = (Button)sender; 
     text += button.Text; 
     while (text != "0" && text[0] == '0' && text[1] != '.') 
      text = text.Substring(1); 
     textBox1.Text = text; 
     return text; 
    } 

    public void Operations() 
    { 
     if (Operator != '=') 
     { 
      operand_2 = double.Parse(textBox1.Text); 

      switch (Operator) 
      { 
       case '+': solution = operand_1 + operand_2; 
        break; 
       case '-': solution = operand_1 - operand_2; 
        break; 
       case '*': solution = operand_1 * operand_2; 
        break; 
       case '/': solution = operand_1/operand_2; 
        break; 
      } 
      Operator = '='; 
      textBox1.Text = solution.ToString(); 
     } 
     operand_1 = double.Parse(textBox1.Text); 
     Operator = char.Parse(((Button)sender).Text); 
     text = "0"; 
    } 
} 

發件人錯誤:無法解析符號「發件人」 文本框錯誤:無法解析符號'textBox1' 不知道它應該是公共字符串還是void

:'(

任何幫助將做pls!

+0

Ehhh ..您將代碼從事件處理程序移至單獨的類,但未將事件處理程序的「發件人」參數賦予分隔的代碼。因此,「發件人」變量未在「數字」方法 –

回答

0

你需要讓你的函數返回一個字符串。然後在你的調用中,從表單中將文本框文本設置爲返回值。

private void numbers_Click(object sender, EventArgs e) 
{ 
    Class1 cls = new Class1(); 
    textBox1.Text = cls.Numbers(textBox1.Text); 
} 
public string Numbers(string text) 
{ 
    Button button = (Button)sender; 
    text += button.Text; 
    while (text != "0" && text[0] == '0' && text[1] != '.') 
     text = text.Substring(1); 

    return text; 
} 

public void Operations(string textBoxText, string buttonText) 
{ 
    string returnText = ""; 

    if (Operator != '=') 
    { 
     operand_2 = double.Parse(textBoxText); 

     switch (Operator) 
     { 
      case '+': solution = operand_1 + operand_2; 
       break; 
      case '-': solution = operand_1 - operand_2; 
       break; 
      case '*': solution = operand_1 * operand_2; 
       break; 
      case '/': solution = operand_1/operand_2; 
       break; 
     } 
     Operator = '='; 
     returnText = solution.ToString(); 
    } 
    operand_1 = double.Parse(textBoxText); 
    Operator = char.Parse(buttonText); 
    text = "0"; 
    return returnText; 
} 

private void operators_Click(object sender, EventArgs e) 
{ 
    Class1 cls1 = new Class1(); 
    cls1.Operations(textBox1.Text, ((Button)sender).Text); 
} 
+0

中聲明,謝謝,這很有效,我仍然對發件人和公共無效操作中的文本框存在問題,對此有何看法? – ChrisAngel

+0

是的,同樣的事情,從函數返回字符串並將其設置在窗體中。這一次,您還需要將兩個字符串從文本框和按鈕文本傳遞到函數中。見上面的更新。 –

+0

好的,我明白你在那裏做了什麼,但它仍然顯示我的方法'操作'有2個參數(s),但調用0參數。我明白這是什麼意思,但我們只有一個文本框的主要形式 – ChrisAngel

0

我可能是錯的,但可以肯定的是,文本框修飾符設置爲公開,如果在紅我有這樣的,這就是我如何固定礦爲至少部分。