我在窗口2下获得了数据,然后要赋值给窗口7的ZedGraph显示,要怎么做??我是怎么做的:先将窗口7的zedgraph定义为public;
然后在窗口7中定义一个公共的zedgraph显示函数,接着再窗口2中获得了数据后,再用这个公共函数,最后达到显示的目的;代码如下:
窗口2:
private void timer1_Tick(object sender, EventArgs e)//时钟到了触发,100ms一次
{
Form7 form7 = new Form7();
int num = Hexstringtoint(receive.Substring(1, 2));
int num2 = Hexstringtoint(receive.Substring(3, 2));
int num3 = Hexstringtoint(receive.Substring(5, 2));
int num4 = Hexstringtoint(receive.Substring(7, 2));
form7.zedgraphdisplay(wavedisplayx, num, num2, num3, num4);
wavedisplayx+=100;
注:其中Hexstringtoint函数将16进制字符串转为整数,我中断看了,num到num4都是有数据的,都是没错的,是有数据的;窗口7:
public void zedgraphdisplay(int a, int b, int c, int d, int e)
{
list.Add(a, b);
list2.Add(a, c);
list3.Add(a, d);
list4.Add(a, e);
zg1.AxisChange();
zg1.Invalidate();
}运行后在窗口7中应该得到100ms一个周期的波形图,但是为什么实际是窗口7的zedgraph中什么东西都没有,一直为空呢???
然后在窗口7中定义一个公共的zedgraph显示函数,接着再窗口2中获得了数据后,再用这个公共函数,最后达到显示的目的;代码如下:
窗口2:
private void timer1_Tick(object sender, EventArgs e)//时钟到了触发,100ms一次
{
Form7 form7 = new Form7();
int num = Hexstringtoint(receive.Substring(1, 2));
int num2 = Hexstringtoint(receive.Substring(3, 2));
int num3 = Hexstringtoint(receive.Substring(5, 2));
int num4 = Hexstringtoint(receive.Substring(7, 2));
form7.zedgraphdisplay(wavedisplayx, num, num2, num3, num4);
wavedisplayx+=100;
注:其中Hexstringtoint函数将16进制字符串转为整数,我中断看了,num到num4都是有数据的,都是没错的,是有数据的;窗口7:
public void zedgraphdisplay(int a, int b, int c, int d, int e)
{
list.Add(a, b);
list2.Add(a, c);
list3.Add(a, d);
list4.Add(a, e);
zg1.AxisChange();
zg1.Invalidate();
}运行后在窗口7中应该得到100ms一个周期的波形图,但是为什么实际是窗口7的zedgraph中什么东西都没有,一直为空呢???
解决方案 »
- 如何去遍历接口下的类
- WCF定义的复合类型,在客户端创建时无默认值?
- 请问这个控件如何实现???
- 最小化到右下角
- ”背包问题“算法查错
- 请教:用C#.net如何实现数据库中一张表的数据复制到另外一张表?
- 请问.NET中如何将中文转化为unicode码?
- 我刚学C#,请问安装了MSDN后如何使用
- 一个WEB系统(C#。NET),我想在打开登录页面时就检验某台电脑是否有权限访问本系统,能不能通过检验该客户端电脑上是否存在某文件,若存
- 为什么 WebBrowser_DocumentCompleted() 里面会被触发两次
- DataGridView
- 求一恒真恒假的 lambda Express 表达式
private void timer1_Tick(object sender, EventArgs e)//时钟到了触发,100ms一次
{
int num = Hexstringtoint(receive.Substring(1, 2));
int num2 = Hexstringtoint(receive.Substring(3, 2));
int num3 = Hexstringtoint(receive.Substring(5, 2));
int num4 = Hexstringtoint(receive.Substring(7, 2));
Form7 form7 = new Form7(wavedisplayx,num ,num2,num3,num4);
form7.show();
}
窗口7:public from7()
{
InitializeComponent();
}public from7(int a, int b, int c, int d, int e)
{
InitializeComponent();
list.Add(a, b);
list2.Add(a, c);
list3.Add(a, d);
list4.Add(a, e);
zg1.AxisChange();
zg1.Invalidate();
zedgraphdisplay(a, b, c, d,e);
}
这个还有问题,,没看到你用的是Timer控件,,,应该委托事件的
您的代码我试了一下,好像有问题,我是这样写的(窗口2主窗体,窗口1是zedgraph分窗口)窗口2主窗体:
private void Form2_Load(object sender, EventArgs e)
{
System.Windows.Forms.Timer time1 = new System.Windows.Forms.Timer();
time1.Tick += new EventHandler(timer1_Tick);//添加timer的“滴答”事件
time1.Interval = 100;//时钟的间隔为100ms
time1.Start();//时间开始启动
i = 0;
}public void timer1_Tick(object sender, EventArgs e)
{
int x = (int)i * 5;
int y = (int)i * 4;
int y2 = (int)i * 3;
int y3 = (int)i * 2;
int y4 = (int)i * 1;
i++;
Form1 form1 = new Form1(x, y, y2, y3, y4);
form1.Show();
}zedgraph分窗口:
public Form1(int a, int b, int c, int d, int e)
{
list.Add(a, b);
list2.Add(a, c);
list3.Add(a, d);
list4.Add(a, e);
zg1.AxisChange();
zg1.Invalidate();
//zeddisplay(a,b,c,d,e);
}注:其中您给的2条代码不能加上“InitializeComponent(),加上一直会初始化,弹出N个窗口;zedgraphdisplay(a, b, c, d,e)我不知道加哪里,因为这个函数被去掉了)执行后,发现”zg1.AxisChange();”命令行处出现错误“未将对象引用到设置对象的实例”这是为什么呢?还有:我的自己的第一中方法:若果zedgraph和time_tick函数在同一个窗口下,那么是可以调用zedgraphdisplay函数来显示的,为正确;
但是如果zedgraph和time_tick函数在不用窗口下,那么同样的函数调用,分窗口下的zedgraph是没有任何显示的?这又是为什么呢??
应该怎么做?请不要神龙见首不见尾啊
private void timer1_Tick(object sender, EventArgs e)//时钟到了触发,100ms一次
{int num = Hexstringtoint(receive.Substring(1, 2));
int num2 = Hexstringtoint(receive.Substring(3, 2));
int num3 = Hexstringtoint(receive.Substring(5, 2));
int num4 = Hexstringtoint(receive.Substring(7, 2));
wavedisplayx+=100;
Form7 form7 =GetInstance(wavedisplayx,num ,num2,num3,num4);
form7.ShowDialog();
} Form7 form = null;
public Form7 GetInstance(int a, int b, int c, int d, int e)
{
if (form == null || form.IsDisposed)
{
form = new Form7();
}
form7.zedgraphdisplay(a, b, c, d, e);
return form;
}
根据我的嘴开始的方法(见本帖最上端我的问题),我用中断模式调试,发现当进入
public void zedgraphdisplay(int a, int b, int c, int d, int e)
{
list.Add(a, b);
list2.Add(a, c);
list3.Add(a, d);
list4.Add(a, e);
zg1.AxisChange();
zg1.Invalidate();
}
这个中断的时候检测变量a,b,c,d,e都死明确有数值的,但是就他 吗 的 没给显示!!!这到底是为什么???我降2个函数(接收数据 和 显示图形)放到一个窗口下(zedgraph的窗口)就好了 这到底是为什么?
Form7 form7 = new Form7();
int num = Hexstringtoint(receive.Substring(1, 2));
int num2 = Hexstringtoint(receive.Substring(3, 2));
int num3 = Hexstringtoint(receive.Substring(5, 2));
int num4 = Hexstringtoint(receive.Substring(7, 2));
form7.zedgraphdisplay(wavedisplayx, num, num2, num3, num4);
wavedisplayx+=100;你这样只是赋值了,,但是没有让from7显示出来,,,
就好比你在游戏中买了装备,但是没有进游戏,所以你看不到你的装备
我的问题解决了。