我的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();
}
}
}
任何人都可以帮我解决我在这里犯的错误。我正在使用财产来转移价值。我无法弄清楚这是什么错误。或任何其他最佳方式。
答案 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();
}
}
现在当在第一个控件中更改值时,您可以在第二个控件中设置该值。