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);
能具体说说嘛?
追答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#中关闭子窗口的同时刷新父窗口的办法?的主要内容,如果未能解决你的问题,请参考以下文章