如何从一个用户控件获取文本框信息

时间:2013-02-21 12:56:23

标签: c# winforms c#-4.0

我的Windows窗体应用程序中有两个用户控件。在第一个用户控件中,我有一个“文本框”和一个“保存”按钮 我在另一个用户控件中有“Textbox” 当我点击第一个用户控件中的“保存”按钮时,无论用户控件中“文本框”中的值是什么,都必须在另一个用户控件“文本框”中显示。

我试过这样的

namespace project
{
    public partial class ucSample : UserControl
    {

    private double transferVolume;

    public double TransferVolume
    {
        get { return transferVolume; }
        set { transferVolume = value; }
    }

    public ucSample()
    {
        InitializeComponent();

    }

    private void btnSave_Click(object sender, EventArgs e)
    {
        TransferVolume = double.Parse(txtSamplevolume.Text);
       }
    }
}

在另一个用户控件中,我正在尝试编写逻辑,如下所示。

namespace project
{
    public partial class ucSettings : UserControl
    {
         ucSample samplevolume = new ucSample();
         public ucSettings()
         {
             InitializeComponent();
         }

         private void  txtvolumeMin_TextChanged(object sender, EventArgs e)
         {
             txtvolumeMin.Text = samplevolume.TransferVolume.ToString();
         }
    }
}

任何人都可以帮我解决我在这里犯的错误。我正在使用财产来转移价值。我无法弄清楚这是什么错误。或任何其他最佳方式。

1 个答案:

答案 0 :(得分:1)

看起来您的代码已经颠倒了。假设第一个控件中的文本框名为foo(因为我们没有看到该代码),并且还假设表单上ucSettings控件的实例名为ucSettingsInstance

ucSample控件中的

public event EventHandler TextChanged;

private void foo_TextChanged(object sender, EventArgs e)
{
    if (this.TextChanged != null) { this.TextChanged(sender, e); }
}
表单中的

会消耗该新事件:

private void ucSettingsInstance_TextChanged(object sender, EventArgs e)
{
    ucSettingsInstance.MinimumVolume = ucSampleInstance.TransferVolume;
}

现在我们需要向ucSettings添加新属性:

public double MinimumVolume
{
    get { return minimumVolume; }
    set
    {
        minimumVolume = value;
        txtVolumnMin.Text = minimumVolume.ToString();
    }
}

现在当在第一个控件中更改值时,您可以在第二个控件中设置该值。