无法为文本框添加价值

时间:2017-07-17 11:47:31

标签: c# winforms textbox user-controls

我有一个datacontrol.cs(UserControl),它包含textbox1和codebehind窗口,其中包含一个参数为currentvalue的方法

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

我有一个表单,这里添加了这个表单中的usercontrol,其中包含一个Button

因此,当点击按钮时,它会通过方法的方式将当前值传递给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();。它没有显示任何错误。但最后文本框没有显示任何值。

我使用断点来检查功能。它为文本框提供了当前值。但奇怪!!! .. 我无法预测代码中的错误。 帮助赞赏。:)

3 个答案:

答案 0 :(得分:3)

您需要将datacontrol的实例添加到表单

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

答案 1 :(得分:3)

您的表单上不存在具有所需值(1500.00f)的datacontrol实例。你只是在贬低它,传递价值而忘记它。

如果您已将用户控件添加到表单并想要调用现有控件的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类的一个字段,在需要时分配它的新控件实例,并按照第一个示例中所示调用它。

答案 2 :(得分:0)

您可以通过在按钮单击事件处理程序中使用用户控件的tagename来调用bindvalue方法。 假设标签名称是' datacontrol',那么您应该使用以下代码行来完成您的任务:

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

}

此致,Aamir(.Net开发人员)

如果它解决了所寻找的问题,请将此主题标记为答案...谢谢