【问题标题】:Textbox Save Data into Object Variable WinForms C#文本框将数据保存到对象变量 WinForms C#
【发布时间】:2020-07-23 00:04:17
【问题描述】:

所以基本上我的问题是我有 2 个表单,一个用于填充玩家名称(4 玩家),如果用户没有填写一个或所有文本框,随机名称将使用 streamreader 生成,所以这部分一切都很好,但我的问题是我将所有内容都保存到我的变量中,但是当尝试以其他形式使用相同的变量时,它不会让我为空

    public class Player  //my classs and my player variable
        {
            
         
            string namee; 
            public string Namee { get => name; set => name = value; }
        }

表格 1 代码

 private void bPlay_Click(object sender, EventArgs e)
        {
           Player p1 = new Player();
           if (tbPlayer1.Text.Equals("")) //And that's the same code for all the players 
            {
                rnName = rname.Next(1, 101);
                rnLastName = rlastname.Next(1, 101);
                p1.Namee += nameList[rnName] + lastnameList[rnLastName];
            }
            else
            {
                p1.Namee = tbPlayer1.Text;
                
            }
from2.Show();
    }

现在以我的表格 2 开头

public Gameplay()
    {
        InitializeComponent();
       
        tbGameplayMessage.Text += " Some text " + p1.Namee;
    }

它只在我的第二个表单的文本框中显示一些文本

感谢大家的帮助!! :D

【问题讨论】:

  • 您的播放器 p1 未正确传递给 Form 2。另外,Form 2 中的 p1 是如何实例化的?我猜在表格 2 中你有上面的 Gameplay():Player p1 = new Player();
  • 最简单的解决方法是在表格 2 中创建一个 C# Property,然后在表格 1 中 form2.Show() 之后创建一个,您可以调用:form2.p1 = p1;
  • 除了提到的Property Mercifies,您还可以通过自定义 Form2 构造函数将“p1.Namee”传递给 Form2。
  • 我该怎么做@KyleWang?哪个更好?
  • 只要把form2.p1 = p1? @Mercifies

标签: c# winforms textbox


【解决方案1】:

解决方案 A(构造函数):

定义一个字符串来存储从p1.namee 传递的值和一个带有string parameter 的构造函数,用于Gameplay class

public partial class Gameplay : Form
{
    public Gameplay(string na)
    {
        InitializeComponent();
        namee = na;
    }

    string namee;

    // show the text
    private void btnShow_Click(object sender, EventArgs e)
    {
        labeltoShow.Text = namee;
    }
}

然后修改bPlay_Click如下。

private void bPlay_Click(object sender, EventArgs e)
{
    Player p1 = new Player();
    p1.Namee = tbPlayer1.Text; // for test

    Gameplay form2 = new Gameplay(p1.Namee);
    form2.Show();
}

解决方案 B(物业)

Gameplay 类中定义一个属性Namee

public partial class Gameplay : Form
{
    public Gameplay()
    {
        InitializeComponent();
    }

    public string Namee { get; set; }

    // show the text
    private void btnShow_Click(object sender, EventArgs e)
    {
        labeltoShow.Text = Namee;
    }
}

然后在调用Show() 之前在bPlay_Click 中设置此属性。

private void bPlay_Click(object sender, EventArgs e)
{
    Player p1 = new Player();
    p1.Namee = tbPlayer1.Text;

    Gameplay form2 = new Gameplay();
    form2.Namee = p1.Namee;
    form2.Show();
}

【讨论】:

猜你喜欢
  • 2018-06-15
  • 1970-01-01
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多