C#中关闭子窗口的同时刷新父窗口的办法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中关闭子窗口的同时刷新父窗口的办法?相关的知识,希望对你有一定的参考价值。

在子窗口的textbox中输入一个值之后点击确认,然后在父窗口的richtextbox中查找这个值,应该怎么实现?

参考技术A

用委托就可以实现

在子窗体里面定义一个委托

在父窗体按钮里面实现委托就行 

子窗体:

public delegate void PrintInfoShow(string text);

        public event PrintInfoShow PrintEvent;

        private void button1_Click(object sender, EventArgs e)

       

            if (PrintEvent!=null)

           

                PrintEvent(textBox1.Text);

           

       

父窗体:

 private void button2_Click(object sender, EventArgs e)

       

            Form1 fo = new Form1();

            fo.PrintEvent+=new Form1.PrintInfoShow(fo_PrintEvent);

            fo.ShowDialog();


       


        void fo_PrintEvent(string text)

       

            this.textBox2.Text = text;

       


追问

还有其他方法吗?这种貌似不行啊。

追答

你是把子窗体的值传到父窗体里面? 哦 我明白了 你的意思就是从一堆字符串里面查找你输入的值?

追问

对对对,就是在子窗口里输入你要查找的字符,然后在父窗口的richtextbox里面查找。
大神,快教教我

追答

void fo_PrintEvent(string text)

selectInfo(text);

private void selectInfo(string num)

richTextBox1.Refresh();
//首先找到要查找字符串的起始位置
int a = this.richTextBox1.Find(num);
//判断一下是否找到,如果找不到那么开始位置是-1
if (a >= 0)

richTextBox1.SelectionStart = a;
//得到字符串的长度
richTextBox1.SelectionLength = num.Length;
//然后就可以改变这个字符串的颜色
richTextBox1.SelectionColor = Color.Red;


这样就实现你的要求了

追问

查找我会,但是我怎么在关闭子窗口的时候在父窗口里实现查找嘞。我已经把值传到了父窗口里,我关闭子窗口的时候他不能自动查找,需要刷新父窗口,这个怎么办?

追答

我这个方法就是啊 不用你刷新 结合上面的代码就是个整体
public delegate void PrintInfoShow(string text);
public event PrintInfoShow PrintEvent;
private void button1_Click(object sender, EventArgs e)

if (PrintEvent!=null) PrintEvent(textBox1.Text); this.Close();

父窗体:

private void button2_Click(object sender, EventArgs e)

Form1 fo = new Form1(); fo.PrintEvent+=new Form1.PrintInfoShow(fo_PrintEvent);
fo.ShowDialog();

void fo_PrintEvent(string text) selectInfo(text);

本回答被提问者采纳
参考技术B showDialog();追问

能具体说说嘛?

追答

form1中if(form2.showdialog() == dialogResult.ok)

From2数据处理

追问

谢谢你,我已经解决了。

C#里在子窗口与父窗口之间进行数据传送

在C#里经常需要在子窗口与父窗口之间进行数据传送,或者调用,虽然有很多方法可以实现,但是采用委托还是比较简单和直接的方式。
所以这次针对委托来演示一下怎么样实现这种功能。

下面先来创建一个带两窗口的例子,如下图所示:

接着来看一下,创建父窗口的代码:


namespace WindowsForms_Delegate

    partial class Form_Main
    
        /// <summary>
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        
            if (disposing && (components != null))
            
                components.Dispose();
            
            base.Dispose(disposing);

以上是关于C#中关闭子窗口的同时刷新父窗口的办法?的主要内容,如果未能解决你的问题,请参考以下文章

C#里面,子窗口关闭以后,刷新一个父窗口的控件的属性,怎么办

VS2010 中关闭子窗体刷新父窗体怎么实现

子窗口关闭,父窗口如何刷新

父窗口刷新的问题!

C# winform 父窗口子窗口按钮控制

怎么实现父窗口打开子窗口,子窗口关闭后自动刷新父窗口?