我在视觉工作室玩游戏并更好地了解C#。我来自Java的中级背景知识。
我制作了一个非常简单的Windows窗体应用程序。用户点击一个按钮,按钮将它们带到另一个屏幕,用户键入一个文本框并按下一个按钮,在该按钮中,该按钮将显示用户键入的内容;在形式。这是代码:
Form1.cs中:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
Form2 userinputForm;
public Form2 getSetForm2 {
get { return userinputForm; }
set { userinputForm = value; }
}
Form1 homeFormObj;
public Form1 getSetForm1 {
get { return homeFormObj; }
set { homeFormObj = value; }
}
public Form1()
{
InitializeComponent();
getSetForm2 = new Form2();
getSetForm1 = this;
getSetForm2.formOnePublicObj = getSetForm1;
}
internal void displayUserInput(string name)
{
Label l = new Label();
l.Text = name;
panel1.Controls.Add(l);
}
private void button1_Click(object sender, EventArgs e)
{
userinputForm.Show();
}
}
}
Form2.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form2 : Form
{
Form1 formOneObj;
public Form1 formOnePublicObj {
get { return formOneObj; }
set { formOneObj = value; }
}
public Form2()
{
InitializeComponent();
}
List<string> userinputs = new List<string>();
private void button1_Click(object sender, EventArgs e)
{
string name = textBox1.Text;
formOnePublicObj.displayUserInput(name);
}
}
}
第二次用户按下按钮转到form2时会发生错误。它出现在.show()方法上。
(P.S我这样编码,看看我如何将数据从一个窗口表单传递到另一个窗体,因此表单对象上的getter和setter)。
答案 0 :(得分:0)
好吧,userinputform
永远不会设置,null
也是如此。因此,我不明白为什么它第一次有效,除非你的代码实际上没有粘贴。
这可能是因为您正在关闭第二种形式,这会破坏它,因此您无法再次显示它。每次单击form1中的按钮时,都会创建一个新的form2:
getSetForm2 = new Form2();
getSetForm1 = this;
getSetForm2.formOnePublicObj = getSetForm1;