2017-07-17 92 views
-1

我有一個datacontrol.cs(用戶控件),其是含有具有與CurrentValue的的參數的方法和TextBox1的代碼隱藏窗口不能能值添加到文本框

public void bindvalue(float currentvalue) 
{ 
    textbox1.Clear(); 
    textbox1.Text = currentvalue.ToString(); 
} 

我有一個表格,在這裏加入在這種形式的用戶控件,其中包含一個按鈕,因此當點擊按鈕時,它通過方法傳遞一個當前值到datacontrol類。

private void button_click(object sender, EventArgs e) 
{ 

    float currentvalue = 1500.00f; 
    datacontrol obj = new datacontrol(); 

    obj.bindvalue(currentvalue); 
} 

一切正常工作給我。它將當前值傳遞給usercontrol類,並將當前值分配/添加到textbox1.Text = currentvalue.ToString();。它不顯示任何錯誤。但最後文本框沒有顯示任何值。

我用斷點來檢查功能。它給文本框帶來了當前的價值。但奇怪!!! 我無法預測我的代碼有什麼問題。 幫助表示讚賞。:)

+1

什麼是'datacontrol'? –

+2

從我看到的,除了聲明它外,你不會對你的'obj'做任何事情,你不要將它掛在你的表單控件或任何其他東西 – Icepickle

+0

它的用戶控件GUI @ BarryO'Kane – User6667769

回答

3

你的datacontrol與所需的值(1500.00f)實例不表單上的存在。你只是在貶低它,傳遞價值並忘記它。

如果您已經添加的用戶控制,以形成並想打電話給現有的控制bindvalue方法,你應該做到以下幾點:

private void button_click(object sender, EventArgs e) 
{ 
    float currentvalue = 1500.00f; 
    this.dataControl1.bindvalue(currentvalue); 
} 

注意dataControl1是您的用戶控件的名稱的形式,它可以不同於dataControl1

如果要創建新的用戶控制和呼叫bindvalue,你應該在窗體上添加新的實例:在窗體上

private void button_click(object sender, EventArgs e) 
{ 
    float currentvalue = 1500.00f; 
    datacontrol obj = new datacontrol(); 

    obj.bindvalue(currentvalue); 
    this.Controls.Add(obj); 
} 

如果已經動態添加控件,申報Form類的領域,分配它的新實例控制,當你需要時,並按第一個例子中所示調用它。

+0

的第一部分帖子,它再次添​​加控件 – User6667769

+0

@ User6667769好吧,如果控件已經存在,請檢查第一個示例代碼。 –

+0

是的,謝謝你的工作:)不錯... – User6667769

3

你需要添加的datacontrol實例的形式

datacontrol obj = new datacontrol(); 
obj.bindvalue(currentvalue); 
Controls.Add(obj); 
0

通過在按鈕單擊事件處理程序中使用用戶控件的tagename,您可以簡單地調用bindvalue方法。 假設標記名稱是「數據控件」,那麼你應該使用下面的代碼行來實現你的任務:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    float myvalue = 150.50f; 
    datacontrol1.BindValue(myvalue); 

} 

問候,阿米爾(.NET開發人員)

請將該線程標記爲答案,如果它解決了尋找什麼......謝謝

+0

「假設標記名稱是'datacontrol',那麼「你的代碼是錯誤的。 Althgou它只是一個小小的細節,像一個丟失的1,但它會讓你的代碼不能編譯。 –

+0

Mong Zhu,怎麼我的代碼錯了?我已經運行了這個代碼,輸出結果還可以。這只是一小段代碼。 –

+0

請閱讀你寫的內容。 「通過使用tagename調用bindvalue方法....假設標記名是'datacontrol'」你有一個錯字!因爲在你的代碼中你寫道:'datacontrol1.BindValue(myvalue);'。這確實是一個小錯誤,但卻是一個非常重要的錯誤,因爲如果控件名稱確實是'datacontrol',那麼您的代碼將無法編譯! –