C# 我正在为记事本制作查找和替换功能
我想选择主窗体上的文本,该文本写在查找和替换窗体中C# 我正在为记事本制作查找和替换功能,c#,C#,我想选择主窗体上的文本,该文本写在查找和替换窗体中 private void findToolStripMenuItem_Click(object sender, EventArgs e) { Find f = new Find(); f.Show(); } public void find() { int idx = 0; while ((idx = textBox1.Text.IndexOf(Text)) != -1) { tex
private void findToolStripMenuItem_Click(object sender, EventArgs e)
{
Find f = new Find();
f.Show();
}
public void find()
{
int idx = 0;
while ((idx = textBox1.Text.IndexOf(Text)) != -1)
{
textBox1.Select(idx, Text.Length);
}
}
表格二
Form1 f = new Form1();
f.Text = textBox1.Text;
f.find();
Form1 f = (Form1)this.Parent;
f.find(textBox1.Text);
在构建
Form2
时,需要将Form1
的实例注入Form2
:
var f2 = new Form2(this);
f2.Show();
private Form1 _f1;
public Form2(Form1 f1)
{
_f1 = f1;
}
现在,将该实例作为private
字段存储在Form2
中:
var f2 = new Form2(this);
f2.Show();
private Form1 _f1;
public Form2(Form1 f1)
{
_f1 = f1;
}
在表格2的.ctor
中:
var f2 = new Form2(this);
f2.Show();
private Form1 _f1;
public Form2(Form1 f1)
{
_f1 = f1;
}
(注意:保留默认构造函数。)
然后,当您要执行查找时:
_f1.Text = textBox1.Text;
_f1.find();
您现在正在做的是构建另一个Form1
实例
一个有趣的项目是\u f1.Text=…
-我猜这实际上应该是表单1
上的一个文本框。您可以通过在Properties
窗口中的Form1
,public
上设置文本框,然后执行类似操作来解决此问题:
_f1.textBox1.Text = textBox1.Text;
在构建Form2
时,需要将Form1
的实例注入Form2
:
var f2 = new Form2(this);
f2.Show();
private Form1 _f1;
public Form2(Form1 f1)
{
_f1 = f1;
}
现在,将该实例作为private
字段存储在Form2
中:
var f2 = new Form2(this);
f2.Show();
private Form1 _f1;
public Form2(Form1 f1)
{
_f1 = f1;
}
在表格2的.ctor
中:
var f2 = new Form2(this);
f2.Show();
private Form1 _f1;
public Form2(Form1 f1)
{
_f1 = f1;
}
(注意:保留默认构造函数。)
然后,当您要执行查找时:
_f1.Text = textBox1.Text;
_f1.find();
您现在正在做的是构建另一个Form1
实例
一个有趣的项目是\u f1.Text=…
-我猜这实际上应该是表单1
上的一个文本框。您可以通过在Properties
窗口中的Form1
,public
上设置文本框,然后执行类似操作来解决此问题:
_f1.textBox1.Text = textBox1.Text;
根据你提供的信息,我不确定这是否有效
以下是一些可能有用的东西:
private void findToolStripMenuItem_Click(object sender, EventArgs e)
{
Find f = new Find();
f.Parent = this; // find a way to pass the Parent to your Find form.
f.Show();
}
public void find(string findValue)
{
int idx = 0;
if ((idx = textBox1.Text.IndexOf(findValue)) != -1)
{
textBox1.Select(idx, findValue.Length);
}
}
表格二
Form1 f = new Form1();
f.Text = textBox1.Text;
f.find();
Form1 f = (Form1)this.Parent;
f.find(textBox1.Text);
您无法实例化新表单1,否则将永远无法获得结果。根据您提供的内容,我不确定这是否有效
以下是一些可能有用的东西:
private void findToolStripMenuItem_Click(object sender, EventArgs e)
{
Find f = new Find();
f.Parent = this; // find a way to pass the Parent to your Find form.
f.Show();
}
public void find(string findValue)
{
int idx = 0;
if ((idx = textBox1.Text.IndexOf(findValue)) != -1)
{
textBox1.Select(idx, findValue.Length);
}
}
表格二
Form1 f = new Form1();
f.Text = textBox1.Text;
f.find();
Form1 f = (Form1)this.Parent;
f.find(textBox1.Text);
您无法实例化新表单1,否则将永远无法得到结果。很难理解您的要求。请尝试详细说明您正在执行的操作将form2上texbox1上的文本指定给form1的文本,然后运行一个函数在form1的textbox1中查找文本,您的问题是form1中的textbox1和form2中的textbox1不一样,不幸的是,您需要进一步的指导,以了解Windows窗体的基本知识,我只是想在记事本中创建一个查找和替换方法。我已经设计了记事本,但我无法完成这个功能查找和替换。很难理解您的要求。请尝试详细说明您正在执行的操作将form2上texbox1上的文本指定给form1的文本,然后运行一个函数在form1的textbox1中查找文本,您的问题是form1中的textbox1和form2中的textbox1不一样,不幸的是,您需要进一步的指导,以了解Windows窗体的基本知识,我只是想在记事本中创建一个查找和替换方法。我已经设计了记事本,但我不能做这个功能查找和替换+1,用于重构find
方法以注入搜索值。+1用于重构find
方法以注入搜索值。最后一部分,根据我对问题的理解,他想创建某种查找功能。也就是说,在表格1中选择他在表格2中键入的内容。我假设他在find()方法中使用了Form1中的公共文本属性。不过,最好将其作为参数传递给find方法。@Charlie,嗯,文本
属性是可疑的,因为它将覆盖表单的标题
——正如您在下面看到的,我+1推荐了jp2code的答案,因为它重构了查找
方法,所以我不一定不同意。您是对的,我忘了一个表单
已经有一个文本
属性在最后一部分,根据我对这个问题的理解,他想创建某种查找功能。也就是说,在表格1中选择他在表格2中键入的内容。我假设他在find()方法中使用了Form1中的公共文本属性。不过,最好将其作为参数传递给find方法。@Charlie,嗯,文本
属性是可疑的,因为它将覆盖表单的标题
——正如您在下面看到的,我+1推荐了jp2code的答案,因为它重构了查找
方法,所以我不一定不同意。您是对的,我忘了表单
已经有文本
属性