关于c#中子窗口调用父窗口中控件内容的问题
例如做一个记事本的查找功能,点击查找会弹出一个查找的窗口。点击查找窗口中的查找按钮,应该在这个按钮的click事件中调用主窗口的textbox中的内容并操作主窗口text...
例如做一个记事本的查找功能,点击查找会弹出一个查找的窗口。点击查找窗口中的查找按钮,应该在这个按钮的click事件中调用主窗口的textbox中的内容并操作主窗口textbox的内容。怎么实现???急求!!!!
展开
4个回答
展开全部
虽然可以传参数直接操作..但推荐用委托加事件来做.很方便也很容易理解...微软也推荐这样做./...
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//主窗口form1
namespace WindowsFormsApplication2
{
public delegate void FindTextHandler(object serder,string text); //申明一个委托代理//text为要查找或替换的文本...
public partial class Form1 : Form
{
Form2 f2 = new Form2();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
f2.FindText+=new FindTextHandler(FindText); //添加事件接收方法
}
private void button1_Click(object sender, EventArgs e)
{
f2.Owner = this;
f2.Show();
}
public void FindText(object sender, string e) //事件处理代码
{
richTextBox1.SelectionStart = richTextBox1.Text.IndexOf(e, 0); //查找文本索引并设置为选中文本开始位置
richTextBox1.SelectionLength = e.Length; //文本长度
richTextBox1.SelectionBackColor = Color.Blue; //文本背景色
richTextBox1.SelectionColor = Color.White; //文本颜色
}
}
}
//form2 查找窗口..
namespace WindowsFormsApplication2
{
public partial class Form2 : Form
{
public event FindTextHandler FindText; //申明一个事件.
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (this.FindText != null)
{
this.FindText(this, textBox1.Text); //触发事件..
}
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//主窗口form1
namespace WindowsFormsApplication2
{
public delegate void FindTextHandler(object serder,string text); //申明一个委托代理//text为要查找或替换的文本...
public partial class Form1 : Form
{
Form2 f2 = new Form2();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
f2.FindText+=new FindTextHandler(FindText); //添加事件接收方法
}
private void button1_Click(object sender, EventArgs e)
{
f2.Owner = this;
f2.Show();
}
public void FindText(object sender, string e) //事件处理代码
{
richTextBox1.SelectionStart = richTextBox1.Text.IndexOf(e, 0); //查找文本索引并设置为选中文本开始位置
richTextBox1.SelectionLength = e.Length; //文本长度
richTextBox1.SelectionBackColor = Color.Blue; //文本背景色
richTextBox1.SelectionColor = Color.White; //文本颜色
}
}
}
//form2 查找窗口..
namespace WindowsFormsApplication2
{
public partial class Form2 : Form
{
public event FindTextHandler FindText; //申明一个事件.
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (this.FindText != null)
{
this.FindText(this, textBox1.Text); //触发事件..
}
}
}
}
展开全部
可以在主窗口中写个方法:
public string a(){ return this.textbox.text; }
这里也可以返回整个窗口
public 主窗体 a(){ return this; }
查询窗口调用这个方法就可以获得主窗口的值了
string str = a();
public string a(){ return this.textbox.text; }
这里也可以返回整个窗口
public 主窗体 a(){ return this; }
查询窗口调用这个方法就可以获得主窗口的值了
string str = a();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在生成的查找窗口的构造函数的参数里面传入父窗口的句柄,里面就可以使用这个父窗口的公共属性和函数了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这种做法一般是通过属性来实现的,将窗体对象引用传递给查找窗口,然后操作之
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询