C# 将变量传递到另一种形式

C# 将变量传递到另一种形式,c#,winforms,C#,Winforms,我正在用c#开发一个windows应用程序。我使用了三个十进制变量:计数器,窄,和宽,它们根据一些计算存储不同的值 单击按钮时,将显示一个消息框,显示这三个十进制值,然后应用程序退出 现在我想添加另一个表单,它有三个标签,其中需要显示这些变量值。请解释,如何在下一个表单中传递这些变量以显示在各个标签中?一个简单的方法是使用属性。要将值传递给的窗体只是另一个类 在第二个表单中添加类似的内容: public int counter {get; set;} 然后从第一种形式开始,你会按照 Form2

我正在用c#开发一个windows应用程序。我使用了三个十进制变量:
计数器
,和
,它们根据一些计算存储不同的值

单击按钮时,将显示一个消息框,显示这三个十进制值,然后应用程序退出


现在我想添加另一个表单,它有三个标签,其中需要显示这些变量值。请解释,如何在下一个表单中传递这些变量以显示在各个标签中?

一个简单的方法是使用属性。要将值传递给的窗体只是另一个类

在第二个表单中添加类似的内容:

public int counter {get; set;}
然后从第一种形式开始,你会按照

Form2 form2 = new Form2();
form2.counter = 1;
form2.ShowDialog();

或者类似的东西。

一个简单的方法是使用属性。要将值传递给的窗体只是另一个类

在第二个表单中添加类似的内容:

public int counter {get; set;}
然后从第一种形式开始,你会按照

Form2 form2 = new Form2();
form2.counter = 1;
form2.ShowDialog();

或者类似的东西。

有一篇博客文章描述。

有一篇博客文章描述。

一种方法是以第二种形式创建一个新的构造函数。然后您可以使用第二个表单中的值

public Form2(decimal x, decimal y, decimal z):this()
{
   this.TextBox1.Text = Convert.ToString(x);
   this.Label1.Text = Convert.ToString(y);
   etc...
};
从主窗体

Form2 frm2 = new  Form2(x,y,z);
frm2.Show();

一种方法是以第二种形式创建一个新的构造函数。然后您可以使用第二个表单中的值

public Form2(decimal x, decimal y, decimal z):this()
{
   this.TextBox1.Text = Convert.ToString(x);
   this.Label1.Text = Convert.ToString(y);
   etc...
};
从主窗体

Form2 frm2 = new  Form2(x,y,z);
frm2.Show();

最简单的方法可能是添加一个新方法,我们将其称为ShowWithDetails:

    public void ShowWithDetails(double Counter, double Narrow, double Broad)
    {
        CounterLabel.Text = Counter.ToString();
        NarrowLabel.Text = Narrow.ToString();
        BroadLabel.Text = Broad.ToString();

        ShowDialog();
    }

最简单的方法可能是添加一个新方法,我们将其称为ShowWithDetails:

    public void ShowWithDetails(double Counter, double Narrow, double Broad)
    {
        CounterLabel.Text = Counter.ToString();
        NarrowLabel.Text = Narrow.ToString();
        BroadLabel.Text = Broad.ToString();

        ShowDialog();
    }
创建一个新表单

public class CalculationResultForm : Form
{
    public CalculationResultForm(){}

    public decimal Counter
    {
        set { labelCounter.Text = value.ToString(); }
    }
    public decimal Broad
    {
        set { labelBroad.Text = value.ToString(); }
    }
    public decimal Narrow
    {
        set { labelNarrow.Text = value.ToString(); }
    }

    private void OkButton_Click(object sender, EventArgs e)
    {
        // This will close the form (same as clicking ok on the message box)
        DialogResult = DialogResult.OK;
    }
}
然后在现有表单按钮中单击处理程序

private void MyButton_Click(object sender, EventArgs e)
{
    CalculationResultForm resultForm = new CalculationResultForm();
    resultForm.Counter = _counter;
    resultForm.Narrow = _narrow;
    resultForm.Broad = _broad;

    resultForm .ShowDialog();

    Application.Exit();
}
创建一个新表单

public class CalculationResultForm : Form
{
    public CalculationResultForm(){}

    public decimal Counter
    {
        set { labelCounter.Text = value.ToString(); }
    }
    public decimal Broad
    {
        set { labelBroad.Text = value.ToString(); }
    }
    public decimal Narrow
    {
        set { labelNarrow.Text = value.ToString(); }
    }

    private void OkButton_Click(object sender, EventArgs e)
    {
        // This will close the form (same as clicking ok on the message box)
        DialogResult = DialogResult.OK;
    }
}
然后在现有表单按钮中单击处理程序

private void MyButton_Click(object sender, EventArgs e)
{
    CalculationResultForm resultForm = new CalculationResultForm();
    resultForm.Counter = _counter;
    resultForm.Narrow = _narrow;
    resultForm.Broad = _broad;

    resultForm .ShowDialog();

    Application.Exit();
}

我想当你这样做的时候,你会失去设计师的支持。我从来没有遇到过问题。我也经常这样做,设计师没有问题。但是,如果隐藏默认构造函数,则可能会出现问题。只有在没有默认构造函数的情况下,才有问题。这是VisualStudio在设计模式下调用的一个。但我认为这样做会失去设计师的支持。我从来没有遇到过问题。我也经常这样做,设计师没有问题。但是,如果隐藏默认构造函数,则可能会出现问题。只有在没有默认构造函数的情况下,才有问题。这是Visual Studio在设计模式下调用的。为什么要调用
应用程序.Exit
呢?否则,我喜欢这个答案,因为它还允许表单以非模态方式显示,使其保持可见,并通过属性不断更新新值。原始问题似乎暗示,这就是当前发生的情况-单击按钮时,将显示一个消息框,显示这三个十进制值,应用程序将退出“-显然,如果不需要,可以将其移除一吨!这是最好的答案,因为它工作得很好。我可以用一个显示打印对话框的“打印”按钮来代替“确定”按钮。实际上,我希望用户直接打印该记分卡…我在prog中是新手,因此如果有这样的命令来执行操作,请使用pl帮助。。thanx!!为什么要调用
应用程序。退出
调用?否则,我喜欢这个答案,因为它还允许表单以非模态方式显示,使其保持可见,并通过属性不断更新新值。原始问题似乎暗示,这就是当前发生的情况-单击按钮时,将显示一个消息框,显示这三个十进制值,应用程序将退出“-显然,如果不需要,可以将其移除一吨!这是最好的答案,因为它工作得很好。我可以用一个显示打印对话框的“打印”按钮来代替“确定”按钮。实际上,我希望用户直接打印该记分卡…我在prog中是新手,因此如果有这样的命令来执行操作,请使用pl帮助。。thanx!!