
c# 关于窗口间数据传递的问题
form1通过串口获得数据显示在label上,怎么将实时变化的label数值传入form2中并显示在form2的label中,数值也要一直变化直到停止串口通讯...
form1通过串口获得数据显示在label上,怎么将实时变化的label数值传入form2中并显示在form2的label中,数值也要一直变化 直到停止串口通讯
展开
4个回答
展开全部
这问题天天都有啊。
public partial class Form4 : Form
{ MsgObj m = new MsgObj();
public Form4()
{
InitializeComponent();
}
private void Form4_Load(object sender, EventArgs e)
{
m.ProessMsg = "初始";
Form5 form5 = new Form5(m);
form5.Show();
}
private void button1_Click(object sender, EventArgs e)
{ for (int i = 0; i < 100; i++)
{
m.ProessMsg = i.ToString();
Application.DoEvents();
}
}
}
public class MsgObj : INotifyPropertyChanged
{
//提供上下文同步环境,以支持多线程
SynchronizationContext ctx = SynchronizationContext.Current;
public event PropertyChangedEventHandler PropertyChanged;
private void M_ProperyChanged(object sender)
{
//向上传递更改通知
if (PropertyChanged != null)
{
if (ctx == null)
{
PropertyChanged(this, new PropertyChangedEventArgs(sender.GetType().ToString()));
}
else
{
ctx.Send(p => PropertyChanged(this, new PropertyChangedEventArgs(sender.GetType().ToString())), null);
}
}
Thread.Sleep(50);
}
private string _ProessMsg;
public string ProessMsg
{
get
{
return _ProessMsg;
}
set
{
_ProessMsg = value;
M_ProperyChanged("ProessMsg");
}
}
}
public partial class Form5 : Form
{
BindingSource bs = new BindingSource();
public Form5()
{
InitializeComponent();
this.label1.DataBindings.Add("Text", bs, "ProessMsg");
}
public Form5(MsgObj msobj):this()
{
bs.DataSource = msobj;
}
}
public partial class Form4 : Form
{ MsgObj m = new MsgObj();
public Form4()
{
InitializeComponent();
}
private void Form4_Load(object sender, EventArgs e)
{
m.ProessMsg = "初始";
Form5 form5 = new Form5(m);
form5.Show();
}
private void button1_Click(object sender, EventArgs e)
{ for (int i = 0; i < 100; i++)
{
m.ProessMsg = i.ToString();
Application.DoEvents();
}
}
}
public class MsgObj : INotifyPropertyChanged
{
//提供上下文同步环境,以支持多线程
SynchronizationContext ctx = SynchronizationContext.Current;
public event PropertyChangedEventHandler PropertyChanged;
private void M_ProperyChanged(object sender)
{
//向上传递更改通知
if (PropertyChanged != null)
{
if (ctx == null)
{
PropertyChanged(this, new PropertyChangedEventArgs(sender.GetType().ToString()));
}
else
{
ctx.Send(p => PropertyChanged(this, new PropertyChangedEventArgs(sender.GetType().ToString())), null);
}
}
Thread.Sleep(50);
}
private string _ProessMsg;
public string ProessMsg
{
get
{
return _ProessMsg;
}
set
{
_ProessMsg = value;
M_ProperyChanged("ProessMsg");
}
}
}
public partial class Form5 : Form
{
BindingSource bs = new BindingSource();
public Form5()
{
InitializeComponent();
this.label1.DataBindings.Add("Text", bs, "ProessMsg");
}
public Form5(MsgObj msobj):this()
{
bs.DataSource = msobj;
}
}

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
1. 先给form1上的label创建一个事件:TextChanged
2. 修改form2的label的属性为public
3. 在form1中完成下面代码,就能实时的更新form2的label的值
form2 fm2 =new form2();
private void label_TextChanged(object sender, EventArgs e)
{
fm2.Label.Text=this.label.Text;
}
2. 修改form2的label的属性为public
3. 在form1中完成下面代码,就能实时的更新form2的label的值
form2 fm2 =new form2();
private void label_TextChanged(object sender, EventArgs e)
{
fm2.Label.Text=this.label.Text;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在form1中用session记住需要传的值,在form2中接参,再赋给label2上。
session["name"]=label1.text;
label2.text=session["name"];
session["name"]=label1.text;
label2.text=session["name"];
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在form2中写一个方法设置label的值,在form1中label的textChange事件中去调用,参数是form1中的label的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询