2015-03-25 117 views
-1

我正在學習C#課程,任務是使用Windows窗體創建一個小型轉換器並使用函數來執行轉換。訪問變量聲明的變量

目前,我已經能夠通過在表單中​​定義一個變量並讓每個不同的按鈕爲該變量賦值,從而在轉換髮生在轉換髮生時刻按鈕被按下。但爲了完成任務,我需要將轉換放置在表單之外。

我遇到的問題是我無法弄清楚如何訪問我在窗體中聲明的變量,我不知道如何在創建函數後將值返回到窗體中。

我猜的功能將類似於

public double conversion(string ConvertIn, string ConvertOut, double Value) 
{ 
    Value = Double.Parse(ValueEntry.Text); 
    double Output = (Value/Double.Parse(ConvertIn)) * Double.Parse((ConvertOut)); 
    FinalOutput.Text = Convert.ToString(Output); 

    { 
     return Output; 
    } 

    return 0; 
} 

轉換我需要一個可變用戶輸入到一個文本框,然後/由另一個值通過一個按鈕選擇再乘以一個數值通過按鈕選擇

但正如我所說我無法弄清楚如何獲得在窗體中聲明的3個變量,或者我將如何將值返回到窗體輸出文本框。

任何幫助將不勝感激。

+0

最簡單的辦法 - 把這些變量** **靜...這將使它「可見」你的代碼的其他部分,如形成 – ymz 2015-03-25 00:43:04

+0

@ymz所以它們被聲明爲靜態字符串ConvertIn;字符串ConvertOut; static double Value,Output;他們仍然沒有出現在其他地方 – user3441417 2015-03-25 00:46:57

+0

現在打開一個新的窗體(讓我們說Form2),並稱他們..假設您的主窗體稱爲Form1:Form1.ConvertIn,Form1.ConvertOut – ymz 2015-03-25 00:48:26

回答

0

從您的描述來看,這聽起來像是你已經被分配了家庭作業的作業,其中你有一個特定的要求,該方法位於一個類別,而不是你的Form子類。

做到這一點的最直接的方法是有一些簡單的「實用工具」類,您可以在其中放置一個靜態方法來執行此轉換。方法參數列表應允許您的Form子類代碼傳遞感興趣的值,當然,調用者將從方法中獲取返回值並將其分配給相應的成員(例如FinalOutput.Text)。

例如:

static class Util 
{ 
    public static string conversion(string ConvertIn, string ConvertOut, string Value) 
    { 
     double c1 = double.Parse(ConvertIn), 
      c2 = double.Parse(ConvertOut), 
      v = double.Parse(Value); 

     return ((v/c1) * c2).ToString(); 
    } 
} 

你可以這樣調用它:

FinalOutput.Text = Util.conversion(ConvertIn.Text, ConvertOut.Text, ValueEntry.Text); 

注:

  • 缺乏a good, minimal, complete code example,我真的不知道該怎麼UI是建立。我可以從你提供的一小段代碼中推斷出ValueEntryFinalOutput控件,但沒有什麼可以提示ConvertInConvertOut的值應該來自哪裏,所以我只是假定了那些相同名稱的控件。我推測給出上面的例子,你可以將實際的正確值傳遞給方法。

  • 如果這實際上是一項家庭作業,看起來您可能仍然希望與老師商量,以便更好地理解上述內容。 StackOverflow對於爲問題提供實際的代碼解決方案並不錯,但要確保學生實際上已經收到了對於實際感興趣的概念至關重要的解釋性細節,很難。(此外,不知道具體的作業分配細節,上面的代碼肯定是代碼,這不一定是你的老師真正想要的)。

+0

我通過按鈕單擊分配給表單中的變量。當我運行你的例子時,它告訴我「'string'不包含'Text'的定義,並且沒有可以找到接受'string'類型的第一個參數的擴展方法'Text'......」是否可以創建一個方法的形式本身,而不是做一個類 – user3441417 2015-03-25 04:32:15

+0

_「是否有可能,而不是我可以在窗體中創建一個方法,而不必創建一個類?」_ - 是的,當然這是技術上可能的。但是,您在您的問題中寫道_「爲了完成我需要將轉換置於表單之外的任務_」,並且上述答案基於該要求。 – 2015-03-25 04:32:45

+0

就編譯器錯誤而言,正如我所說的,你必須弄清楚如何自己傳遞正確的值,因爲你沒有在你的問題中提供任何上下文。也就是說,如果出現錯誤,聽起來好像你可能只是在方法調用中刪除'.Text'。例如。寫'Util.conversion(ConvertIn,ConvertOut,ValueEntry.Text);'代替。 – 2015-03-25 04:34:24