1

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

我试过这样

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();
         }
    }
}

请任何人帮助我我在这里犯了什么错误。我正在使用财产来转移价值。我无法弄清楚错误是什么。或任何其他最佳方式来做到这一点。

4

1 回答 1

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();
    }
}

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

于 2013-02-21T13:03:41.283 回答