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的答案,因为它重构了
查找
方法,所以我不一定不同意。您是对的,我忘了
表单
已经有
文本
属性