为什么链接到Form后数据不会从Form2传输到Form1

时间:2018-11-10 18:50:00

标签: c# winforms

我正在尝试做一个大型编码项目,但是我碰壁了。
输入数据后,我需要显示名称和分数。
我尝试使用youtube教程,代码类。可是没有运气
任何帮助都会很棒!

form1

private void bNew_Click(object sender, EventArgs e)
{
    score link = new score();
    link.Show();

    SudentBox.Items.Clear();
}

form2

public object StudentBox { get; private set; }

private void bCancel_Click(object sender, EventArgs e)
{
    this.Close();

    try
    {
        string name = txtName.Text;
        int score = Convert.ToInt32(txtScore.Text);
        txtStoreScores.Text += score.ToString() + " ";
    }
    catch (Exception x) 
    {
        MessageBox.Show("Please enter a number");
    }
}

private void bClearScores_Click(object sender, EventArgs e)
{
    txtName.Text = "";
    txtScore.Text = "";
    txtStoreScores.Text = "";
}

带有最终结果的表格的示例。

form1

form 2

2 个答案:

答案 0 :(得分:0)

您可以通过使用属性来执行此操作。 在Form 2上添加public static属性,并将文本值分别设置为该属性,然后在Form 1上访问它们。

在“确定”按钮单击事件中的表格2上执行此操作

componentDidMount(){
   this.setState({alarm1: <Image source={require("./assets/alarmon.png")} style={styles.imageButton}/>})
   setTimeout(()=>{this.setState({alarm1: <Image source={require("./assets/alarmoff.png")} style={styles.imageButton}/>})}, 1000); 
}

然后在Form 1 OnLoad事件中访问这些属性并将其显示在TextBox中

public static string Name { get; set; }
public static string Scores { get; set; }
private void bOk_Click(object sender, EventArgs e)
{
   Name = txtName.Text;
   Scores = txtStoreScores.TextBox;
}

答案 1 :(得分:0)

如果我是正确的,则您正在尝试编写DialogBox形式的代码。
假设您想从对话框中获取名称(例如,从TextBox中的Form2中获得一个名称),则可以拥有一个类似的模型(当然在Form2中)。

public string Name
{
    //where myTextBox is the design name of your textbox
    get => myTextBox.Text;
    set => myTextBox.Text=value;
}

简单的确定按钮

public void OkBtnClick(object sender, EventArgs e)
{
    this.Close();
}

现在,您实际上需要获取此信息才能显示在Form1中。很简单。
就像您从上面开始一样:

private void bNew_Click(object sender, EventArgs e)
{
    score link = new score();
    link.ShowDialog();
    //Note that you won't be able to access form1.
    SudentBox.Items.Clear();
    //You can now get the name
    string _nameResult=link.Name;
    NameTextbox.Text=_nameResult;
}

希望这可以帮助您入门!