我想知道如何将值从一个窗口发送到另一个窗口,基本上在调用者窗口我计算的东西,我想将它发送到另一个窗口,它将显示 我在前一个窗口计算的金额..
我想象但我不知道接下来是最好的方法: 我在第二个窗口创建了属性,它将显示信息并从第一个窗口给它一个值,如下所示:
/ / CALLER WINDOW - MAIN WINDOW
private void btnTest_Click(object sender, System.Windows.RoutedEventArgs e)
{
double sum = 0;
foreach (var item in myGrid)
{
sum += Convert.ToDouble(item.TotalAmount);
}
TestWindow change = new TestWindow();
change.Total = Convert.ToDecimal(sum);
change.ShowDialog();
}
TestWindow(第二个窗口必须显示前一个显示的总和)
public partial class TestWindow : Window
{
public decimal Total;
public TestWindow()
{
InitializeComponent();
txtDisplayAmount.Text = Total.ToString();
}
private void btnClose_Click(object sender, System.Windows.RoutedEventArgs e)
{
this.Close();
// TODO: Add event handler implementation here.
}
}
但它总是显示零!
答案 0 :(得分:1)
您可以在创建窗口时传递窗口值:
<强>主窗口:强>
TestWindow change = new TestWindow(Convert.ToDecimal(sum));
change.ShowDialog();
<强> TestWindow:强>
public TestWindow(decimal total)
{
InitializeComponent();
txtDisplayAmount.Text = total.ToString();
}
如果您打算稍后更改该值,则可以使用属性,但是应确保在设置属性时更新TextBox
:
public partial class TestWindow : Window
{
public decimal Total
{
get
{
if (string.IsNullOrEmpty(txtDisplayAmount))
return 0M;
decimal d;
decimal.TryParse(txtDisplayAmount.Text, out d);
return d;
}
set { txtDisplayAmount.Text = value.ToString(); }
}
public TestWindow()
{
InitializeComponent();
}
private void btnClose_Click(object sender, System.Windows.RoutedEventArgs e)
{
this.Close();
}
}
答案 1 :(得分:1)
实际上可以直接将值从1个表单传递到另一个表单,甚至可以更改不同表单之间的值。
在主窗口中尝试这些更改:
public double sum = 0; /// it's important to declare the public variable outside of the click event. use the event only to change it's value.
private void btnTest_Click(object sender, System.Windows.RoutedEventArgs e)
{
foreach (var item in myGrid)
{
sum += Convert.ToDouble(item.TotalAmount);
}
TestWindow change = new TestWindow();
change.Total = Convert.ToDecimal(sum);
change.ShowDialog();
}
现在在您的测试窗口中尝试以下代码:
public partial class TestWindow : Window
{
public decimal Total;
public TestWindow()
{
InitializeComponent();
txtDisplayAmount.Text = ((MainWindow)Application.Current.MainWindow).sum.ToString();
}
private void btnClose_Click(object sender, System.Windows.RoutedEventArgs e)
{
this.Close();
// TODO: Add event handler implementation here.
}
}
答案 2 :(得分:-1)
这是因为当启动 TestWindow 的构造函数时,TestWindow的Total属性为零。将值的参数传递给构造函数并在那里分配。