2017-07-17 67 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',那么您的代码将无法编译! –