我一直使用隐形文本框在我的应用程序中传递数据。现在我想阻止它。所以我需要学习如何做到这一点。现在,我一直坚持将一个字符串从公共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);
}
}
}
我把" ???"在哪里我不知道该怎么做。 请帮忙
答案 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事件中访问它。