从另一个标签页获取值

Get value from another tabpage

我目前在使用 C# 从 windows 表单中的另一个标签页获取值时遇到问题。我在 tabControl 中有 tabPage1 和 tabPage 2。我想将保存在 tabpage1 中的值用于 tabPage 2 中的另一个计算,但我找不到执行此操作的方法。这是我想要进一步理解我的问题的示例。请任何人帮助我解决这个问题,谢谢。

 private void button1_Click_1(object sender, EventArgs e)
 {
            double age = Convert.ToDouble(richTextBox1.Text);
 }

private void button2_Click(object sender, EventArgs e)
 {          double a=0;
            for (int i=1,i<age,i++)
        {
            a=a+i;
        }
 }

P.s。 button1在tabPage1,button2在tabPage 2

这是变量作用域的问题。在您的 button2_Click 方法中,您可能收到有关 age 未声明的错误。

有几个选项:

  1. 再次在您的 button2_Click 方法中获取年龄值。
private void button2_Click(object sender, EventArgs e)
{
       double a = 0;
       double age = Convert.ToDouble(richTextBox1.Text); // Get value again locally.
       for (int i = 1; i < age; i++)
       {
           a += 1;
       }
}

这将意味着 agebutton2_Click 范围内可用。

  1. 将其存储在表单的 属性 中,使其可用于该表单中的所有方法。
public partial class Form1 : Form
{
    private int Age { get; set; } // Property that stores age in the class.

    private void button1_Click_1(object sender, EventArgs e)
    {
       Age = Convert.ToDouble(richTextBox1.Text); // Store in property not local var
    }

    private void button2_Click(object sender, EventArgs e)
    {
        double a = 0;
        for (int i = 1; i < Age; i++) // Loop to property value not local var.
        {
            a += 1;
        }
    }
}

您选择哪个选项取决于您的使用情况(例如,如果在按下按钮 2 之前必须先按下按钮 1,那么您将希望选择选项 2;但是如果您可以直接按下按钮 2 而无需先按下按钮1 那么选项 1 就可以了)。

请注意,在您的 for 循环中您使用了逗号,而您需要使用分号的地方,我上面的示例更正了这一点。

此外,正如@LarsTech 提到的,您需要理想地使用 int.TryParse,因为文本框中的值可能不是数字。