c#将字符串从公共Form1传递给Private void

时间:2016-08-07 05:22:12

标签: c# string

我一直使用隐形文本框在我的应用程序中传递数据。现在我想阻止它。所以我需要学习如何做到这一点。现在,我一直坚持将一个字符串从公共Form1()传递给私有void richTextBox1_KeyDown的问题。我不确定该机制如何传递字符串。

这是我的代码:

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);
        }
    }
}

我把" ???"在哪里我不知道该怎么做。 请帮忙

3 个答案:

答案 0 :(得分:2)

将fileName保存为成员变量并在任何地方使用它。使用File.ReadAllText(_fileName)读取文件:

private readonly string _fileName;

public Form1(string fileName)
{
  InitializeComponent();
  _fileName = fileName;
  richTextBox1.Text = File.ReadAllText(_fileName);
  Text = _fileName.Split(new[] {@"\"}, StringSplitOptions.None).Last();
}

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

答案 1 :(得分:0)

当你展示它时,你的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
    }

}

现在_file已知在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);
        }
    }
}

答案 2 :(得分:0)

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

但是如其他人所说的那样,只需进行少量更改,您就可以在Form1上存储状态(文件名),以便可以在KeyDown事件中访问它。