在线等,问一个简单问题:线程函数中如何访问父窗口的控件?

jxtvaudioer 2020-08-22 03:22:53

看来网上很多资料,好像都讲的比较麻烦,有简单一点的思路和例子吗?
...全文
5699 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨易夕 2020-08-24
  • 打赏
  • 举报
回复
凡是后台子线程要使用UI线程成员的,都应该是Invoke UI线程去执行委托。
ziqi0716 2020-08-24
  • 打赏
  • 举报
回复
委托加Invoke正解
qq_45841743 2020-08-24
  • 打赏
  • 举报
回复
将父窗体的引用传递给子窗体不就行了,比如构造函数、属性。也可以放到一个全局静态变量里,不就到处可以访问了。如果设置了Owner,也可以通过Owner反溯啊。当然也可以通过Windows API去FindWindow啊,方法很多了。
飞天凤凰601 2020-08-24
  • 打赏
  • 举报
回复
主窗体调用子窗体

           public int setint=0;
            FormSon set = new FormSon();
            set.Owner = this;
            set.ShowDialog();
子窗体访问父窗体

  MainForm f1 = (MainForm)Owner;
f1.setint=1;
threenewbee 2020-08-22
  • 打赏
  • 举报
回复
this.Owner.Invoke(new delegate() { this.Owner.xxx = xxx; });
八爻老骥 2020-08-22
  • 打赏
  • 举报
回复
将父窗体的引用传递给子窗体不就行了,比如构造函数、属性。也可以放到一个全局静态变量里,不就到处可以访问了。如果设置了Owner,也可以通过Owner反溯啊。当然也可以通过Windows API去FindWindow啊,方法很多了。
glen30 2020-08-22
  • 打赏
  • 举报
回复
用Invoke,如下所示,richTextBox1是父窗口的控件,下面的函数可以在子线程里面使用(走if分支),也可以在父窗体代码里面使用(走else分支)
void setInfoText(string text)
{
string str = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + text + "\n";

if (richTextBox1.InvokeRequired)
{
richTextBox1.Invoke(new MethodInvoker(delegate
{
richTextBox1.AppendText(str);//在这里操作父窗体的控件
richTextBox1.HideSelection = false;
}));
}
else
{
richTextBox1.AppendText(str);
richTextBox1.HideSelection = false;
}
}
派大奇 2020-08-22
  • 打赏
  • 举报
回复

// form1 有两个控件 
//1 textBox1文本控件
//2 backgroundWorker1 后台控件 模拟线程 
//3 button1 控件
public partial class Form1: Form {

        private void button1_Click(object sender, EventArgs e) {
            this.backgroundWorker1.RunWorkerAsync();
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
            SetMessage("aaaa");
        }

            public void SetMessage(string str) {
            try {
                textBox1.Invoke(new Action(() => {
                    textBox1.Text= str;
                }));

            }
            catch {

            }
        }
}

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧