黑马程序员技术交流社区

标题: 关于弹出的窗体的问题!! [打印本页]

作者: 飞、    时间: 2013-10-4 00:47
标题: 关于弹出的窗体的问题!!
本帖最后由 飞、 于 2013-10-4 18:58 编辑

比如说 记事本 的查找对话框,我点击了纪事本的查找下一个,弹出一个对话框,这个对话框我应该怎么样实现呢?因为这个对话框还要我往里加点控件之类的.
望详细答案,谢谢!!
作者: leayon    时间: 2013-10-4 10:14
如果VS没有给你提供的话,自己新建一个窗体不就可以了。
作者: 七里香    时间: 2013-10-4 13:25
弹出一个新窗体不就ok了吗?然后自己可以随便在新窗体上面放东西。顺便说一下。messageBox其实也就是一个窗体而已。
作者: 飞、    时间: 2013-10-4 14:18
七里香 发表于 2013-10-4 13:25
弹出一个新窗体不就ok了吗?然后自己可以随便在新窗体上面放东西。顺便说一下。messageBox其实也就是一个窗 ...

问题是我在新窗体里点击按钮不能查找到原窗体里的Textbox的文本内容


作者: 黄广祯    时间: 2013-10-4 16:42
你可以重载下新窗体的构造函数,在new新窗体的时候把主窗体传到新窗体中操作。
另外你操作主窗体内容的时候记得先调用一下主窗体的activate方法

下面是代码,参考苏坤老师winform基础一章:
  1.     public partial class frmCheck : Form
  2.     {
  3.         public frmCheck()
  4.         {
  5.             InitializeComponent();
  6.         }
  7.         //通过重载frmCheck的构造方法,将主窗体传递进来
  8.         public frmCheck(frmMain f)
  9.         {
  10.             InitializeComponent();
  11.             mainform = f;
  12.         }

  13.         private frmMain mainform;   //定义一个窗体,来接收通过构造方法传递过来的主窗体

  14.         private int ss;  //接收插入时间时,光标的位置
  15.         private string index; //定义一个私有的string类型接收要查找的内容
  16.         //private int count = 0;
  17.         private bool flag = true;    //定义一个标记,打开或者关闭 接收光标所在的位置
  18.         //查找按钮的Click事件
  19.         private void btnCheck_Click(object sender, EventArgs e)
  20.         {
  21.             //count++;
  22.             mainform.Activate();     //启动接收来的窗体,不启动会遭成操作无法反映到主窗口的文本框中
  23.             if (flag)     //根据标记的值,来确定是否接收当前光标的值
  24.             {
  25.                 ss = mainform.tbContent.SelectionStart;  //接收查找时光标所在的位置
  26.             }
  27.             index = tbCheckIndex.Text;   //将查找文本框中的内容赋给index使用
  28.             int pos = mainform.tbContent.Text.IndexOf(index, ss);  //通过indexof方法根据查找内容和光标位置来找到查找内容的位置
  29.             if (pos != -1)     //如果pos不等于-1说明找到了要查找的内容
  30.             {
  31.                 mainform.tbContent.Select(pos, index.Length);   //根据pos的值和查找内容的长度选中要查找的内容
  32.                 mainform.tbContent.ScrollToCaret();
  33.                 ss = (pos + index.Length);           //光标的位置移动到查找内容的后面(只是值上的反应,并不会造成光标移动)
  34.                 flag = false;             //同时将标记关闭
  35.             }
  36.             else      //没有找到,弹出提示框,并将标记开启,重新接收光标的值
  37.             {
  38.                 MessageBox.Show(string.Format("找不到\"{0}\"",index),"提示");
  39.                 flag = true;
  40.             }
  41.         }
复制代码

作者: 飞、    时间: 2013-10-4 18:57
黄广祯 发表于 2013-10-4 16:42
你可以重载下新窗体的构造函数,在new新窗体的时候把主窗体传到新窗体中操作。
另外你操作主窗体内容的时候 ...

很详细,受用!!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2