c#Mainform不';不接受变量

c#Mainform不';不接受变量,c#,C#,我是c#的初学者,我对MainForm从字符串或其他东西获取值有问题 例如: public partial class MainForm : Form { public string Spieler { get; set;} void MainFormLoad(object sender, EventArgs e) { LogTextBox.AppendText ("\r\nHello "+Spieler); // works nicely }

我是c#的初学者,我对MainForm从字符串或其他东西获取值有问题

例如:

public partial class MainForm : Form
{
    public string Spieler { get; set;}

    void MainFormLoad(object sender, EventArgs e)
    {
        LogTextBox.AppendText ("\r\nHello "+Spieler); // works nicely
    }

    public MainForm()
    {
        InitializeComponent();
        LogTextBox.AppendText ("\r\nHello "+Spieler); // don't because nothing in ()
    }
如果我尝试将
public MainForm()
也设置为
public MainForm(objectsender,EventArgs e)
我会得到一个错误

(c#-错误cs1729不包含构造函数)

即使使用
public MainForm(string-Spieler)
我也会遇到同样的错误

编辑: 我以如下方式使用值启动主窗体:

LogDatei = evelogdir+"\\"+((KeyValuePair<string, string>)CharacterSelectBox.SelectedItem).Key; 
MainForm ueber = new MainForm(); 
ueber.SpielerDatei = LogDatei; 
ueber.Spieler = ((KeyValuePair<string, string>)CharacterSelectBox.SelectedItem).Value; 
ueber.Show(); 
this.Hide();
LogDatei=evelogdir+“\\”+((KeyValuePair)CharacterSelectBox.SelectedItem.Key;
MainForm ueber=新的MainForm();
ueber.SPIELRDATEI=LogDatei;
ueber.Spiler=((KeyValuePair)CharacterSelectBox.SelectedItem).Value;
ueber.Show();
this.Hide();

您应该能够使用默认构造函数MainForm()完成此操作。我不知道你为什么会出错——我自己试过了,效果很好

另请参见我的示例,该示例将字符串值传递给构造函数

public partial class MainForm : Form
{
    public string Spieler { get; set; }
    public MainForm()
    {
        InitializeComponent();
        Console.WriteLine("\r\nHello " + Spieler); // I do not get an error here
    }

    public MainForm(string s)
    {
        InitializeComponent();
        this.Spieler = s;
        Console.WriteLine("\r\nHi " + Spieler);

    }

    private void Form1_Load(object sender, EventArgs e)
    {
        Console.WriteLine("\r\nHello " + Spieler); // works nicely
    }
}

请解释更多,你得到的错误是什么,预期的输出!你能解释一下你想完成什么吗?根据表单初始化的工作方式,
MainForm()
中的空
Spieler
变量是“正确”行为;我们需要知道您正试图做什么来帮助您实现目标。首先,请确保您显示的代码与您正在运行的代码完全相同。然后,请显示创建新的
MainForm
MainFormLoad
的代码是一个事件处理程序,
MainForm()
是类构造函数。事件附加到控件,这就是为什么要将
sender
对象和
EventArgs
传递给处理程序,因为每当发生相应的事件时都会调用此特殊方法。实例化对象(在该点创建构造函数)不是附加到控件的事件,因此您不应该将这些参数传递给它,这就是为什么它会给您错误的原因。@Sach实际上您可以将对象和EventArgs作为构造函数的参数。这毫无意义,但我认为这里的问题是OP如何实例化表单。