你可以重载下新窗体的构造函数,在new新窗体的时候把主窗体传到新窗体中操作。
另外你操作主窗体内容的时候记得先调用一下主窗体的activate方法
下面是代码,参考苏坤老师winform基础一章:- public partial class frmCheck : Form
- {
- public frmCheck()
- {
- InitializeComponent();
- }
- //通过重载frmCheck的构造方法,将主窗体传递进来
- public frmCheck(frmMain f)
- {
- InitializeComponent();
- mainform = f;
- }
- private frmMain mainform; //定义一个窗体,来接收通过构造方法传递过来的主窗体
- private int ss; //接收插入时间时,光标的位置
- private string index; //定义一个私有的string类型接收要查找的内容
- //private int count = 0;
- private bool flag = true; //定义一个标记,打开或者关闭 接收光标所在的位置
- //查找按钮的Click事件
- private void btnCheck_Click(object sender, EventArgs e)
- {
- //count++;
- mainform.Activate(); //启动接收来的窗体,不启动会遭成操作无法反映到主窗口的文本框中
- if (flag) //根据标记的值,来确定是否接收当前光标的值
- {
- ss = mainform.tbContent.SelectionStart; //接收查找时光标所在的位置
- }
- index = tbCheckIndex.Text; //将查找文本框中的内容赋给index使用
- int pos = mainform.tbContent.Text.IndexOf(index, ss); //通过indexof方法根据查找内容和光标位置来找到查找内容的位置
- if (pos != -1) //如果pos不等于-1说明找到了要查找的内容
- {
- mainform.tbContent.Select(pos, index.Length); //根据pos的值和查找内容的长度选中要查找的内容
- mainform.tbContent.ScrollToCaret();
- ss = (pos + index.Length); //光标的位置移动到查找内容的后面(只是值上的反应,并不会造成光标移动)
- flag = false; //同时将标记关闭
- }
- else //没有找到,弹出提示框,并将标记开启,重新接收光标的值
- {
- MessageBox.Show(string.Format("找不到\"{0}\"",index),"提示");
- flag = true;
- }
- }
复制代码 |