c#将字符串从public Form1传递到Private void

c#将字符串从public Form1传递到Private void,c#,string,C#,String,我一直使用不可见的文本框在我的应用程序中传递数据。现在我想阻止这一切。所以我需要学习如何做到这一点。现在我遇到了将字符串从public Form1()传递到私有void richtextbox1keydown的问题。我不确定传递字符串的机制是如何工作的 这是我的密码: public Form1(string file) { InitializeComponent(); StreamReader sr = new StreamReader(file); string fil

我一直使用不可见的文本框在我的应用程序中传递数据。现在我想阻止这一切。所以我需要学习如何做到这一点。现在我遇到了将字符串从public Form1()传递到私有void richtextbox1keydown的问题。我不确定传递字符串的机制是如何工作的

这是我的密码:

public Form1(string file)
{
    InitializeComponent();
    StreamReader sr = new StreamReader(file);
    string filetext = sr.ReadToEnd();
    richTextBox1.Text = filetext;
    string TITLE = file.Split(new string[] { @"\" }, StringSplitOptions.None).Last();
    this.Text = TITLE;
} 
如果执行以下操作,字符串文件将包含类似的内容:“使用(应用程序)打开”:C:\Users\Administrator\Downloads\text.tyx 如果打开原始.exe文件,字符串将为空

如果字符串文件为空或不为空,下面是我想要捕捉的部分:

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.S && e.Control)
    {
        if (Form1(???) != "")
        {
            richTextBox1.SaveFile(Form1(???), RichTextBoxStreamType.PlainText);
        }
    }
}
我把“?”放在我不知道该做什么的地方。
请帮助

在演示时,您的Form1有一个构造函数,该构造函数以字符串作为参数。 因此,实例化Form1的代码可能类似于:

Form1 form1 = new Form1("Some String");
form1.Show();  //or form1.ShowDialog();
为了在Form1代码中使用字符串文件,可以按如下方式为Form1类定义一个成员变量:

class Form1:Form
{
    private string _file;

    public Form1(string file)
    {
        InitializeComponent();
        _file= file;

        // Your code
    }
}

现在_文件在Form1中一直为您所知,您可以使用它:

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.S && e.Control)
    {
        if (!string.IsNullOrEmpty(_file))
        {
            richTextBox1.SaveFile(_file, RichTextBoxStreamType.PlainText);
        }
    }
}

正如您所展示的,您的Form1有一个构造函数,该构造函数以字符串作为参数。 因此,实例化Form1的代码可能类似于:

Form1 form1 = new Form1("Some String");
form1.Show();  //or form1.ShowDialog();
为了在Form1代码中使用字符串文件,可以按如下方式为Form1类定义一个成员变量:

class Form1:Form
{
    private string _file;

    public Form1(string file)
    {
        InitializeComponent();
        _file= file;

        // Your code
    }
}

现在_文件在Form1中一直为您所知,您可以使用它:

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.S && e.Control)
    {
        if (!string.IsNullOrEmpty(_file))
        {
            richTextBox1.SaveFile(_file, RichTextBoxStreamType.PlainText);
        }
    }
}

将文件名另存为成员变量,并在任何地方使用它。使用file.ReadAllText(\u文件名)读取文件:


将文件名另存为成员变量,并在任何地方使用它。使用file.ReadAllText(\u文件名)读取文件:


关于想要停止使用不可见文本框的部分,我建议您研究数据绑定和分离业务逻辑和表单逻辑


但是,如其他人所述,只需进行最小的更改,您就可以将状态(文件名)存储在Form1上,这样就可以在KeyDown事件中访问它。

关于希望停止使用不可见文本框的部分,我建议您研究数据绑定和解耦业务逻辑和表单逻辑


但是,如其他人所述,只需进行少量更改,就可以存储状态(文件名)在Form1上,以便可以在按键下事件中访问它。

文本框的形式是相同的还是不同的?为什么不将静态字符串用于保存当前保存在文本框上的值?相同的形式SajeetharanIs是相同形式或不同形式的文本框?为什么不将静态字符串用于保存当前保存的值按住文本框?同样的表单SajeetharanI试用了它,它崩溃了,因为它在中编辑时无法保存。但这并不重要。我使用一个消息框来确认字符串是否通过了,它确实通过了!“MessageBox.Show(_fileName);”非常感谢!总是添加try-catch块以避免未处理的异常并向用户显示错误。我知道。但我觉得这里没有必要。我试过了,它崩溃了,因为它在中编辑时无法保存。但这并不重要。我使用一个消息框来确认字符串是否通过了,它确实通过了!“MessageBox.Show(_fileName);”非常感谢!总是添加try-catch块以避免未处理的异常并向用户显示错误。我知道。但我不认为这是必要的。你有任何例子,链接或任何可以让我走上正轨的东西吗?因为这听起来像是我感兴趣的东西。你有什么例子、链接或任何能让我走上正轨的东西吗?因为这听起来像是我感兴趣的东西。