标题:求教:窗体的 静态 类变量的 作用
只看楼主
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:16 
正因爲是new,你這個時候new出來的Emp類窗體已經不是原來那個,是全新的,這個新new出來的窗體沒有執行InitData()方法,當然不會有數據。

授人以渔,不授人以鱼。
2014-02-05 16:58
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
得分:0 
以下是引用TonyDeng在2014-2-5 16:58:48的发言:

正因爲是new,你這個時候new出來的Emp類窗體已經不是原來那個,是全新的,這個新new出來的窗體沒有執行InitData()方法,當然不會有數據。

为什么 “這個新new出來的窗體沒有執行InitData()方法”呢? 什么原因呢?

谢谢TonyDeng老师回复!!!
2014-02-05 17:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:2 
都叫你跟踪程序執行流程了,光說是沒有感覺的。

授人以渔,不授人以鱼。
2014-02-05 17:18
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
得分:0 
以下是引用TonyDeng在2014-2-5 17:18:29的发言:

都叫你跟踪程序執行流程了,光說是沒有感覺的。
我跟踪了,确实如您所说。
为此,我把 InitData() 放到 BindList() 里面(附上代码), 虽然没有再出现 上面的错误(lv.Text = emps[i].ID; // 错误“未将对象引用设置到对象实例”),但“确认”后,Emp 窗体 却没有更新变化,也没有任何错误提示,无声无息了...。 到底是咋回事呀 ,郁闷死啦

万分感谢 TonyDeng 老师 这些天的帮助,还要请您点拨点拨啊!!!


===========================
 public void BindList()
        {
            InitData();
            
            //清空ListView中的所有项
            listView1.Items.Clear();
            //如何将数组中的数据绑定到LIstVIew
            //ListView中每一项都是ListViewItem
            
            for (int i = 0; i < emps.Length; i++)
            {
                ListViewItem lv = new ListViewItem();

                lv.Text = emps[i].ID;

                //SubItems是每一项的对应的列
                // lv.SubItems.Add(emps[i].ID);
                lv.SubItems.Add(emps[i].Name);
                lv.SubItems.Add(emps[i].Age.ToString());
                lv.SubItems.Add(emps[i].Assess);
                lv.SubItems.Add(emps[i].Score.ToString());

                listView1.Items.Add(lv);
            }
        }




也试了 将  InitData() 放到 Emp 窗体的 构造函数 里面(附上代码), 也不行,情况 如同 放到 BindList() 里面 一样:

   public Emp()
        {
            InitializeComponent();
            InitData();
            //parent = this;
           
        }

[ 本帖最后由 learnerok 于 2014-2-5 18:56 编辑 ]
2014-02-05 18:06
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
得分:0 
TonyDeng 老师,要不然,您现在 为俺 揭秘吧,行吗? 多谢啦 !!!
2014-02-05 18:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
你一開始的窗體行,仔細看看自己的代碼,InitData()在該窗體對象Load的時候被執行,而不是在該對象new的時候被執行。而後來不行,是因爲new了一個對象之後既沒有執行Load,也沒有主動執行InitData()。你似乎沒有搞清楚類和對象的區別。

你在New Emp一個新對象之後,主動執行IniaData()方法即可看到效果。然而這種用新對象覆蓋舊對象的方法,是畸形的,怎麽改都畸形。

[ 本帖最后由 TonyDeng 于 2014-2-7 13:14 编辑 ]

授人以渔,不授人以鱼。
2014-02-07 13:12
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
得分:0 
以下是引用TonyDeng在2014-2-7 13:12:16的发言:

你一開始的窗體行,仔細看看自己的代碼,InitData()在該窗體對象Load的時候被執行,而不是在該對象new的時候被執行。而後來不行,是因爲new了一個對象之後既沒有執行Load,也沒有主動執行InitData()。你似乎沒有搞清楚類和對象的區別。

你在New Emp一個新對象之後,主動執行IniaData()方法即可看到效果。然而這種用新對象覆蓋舊對象的方法,是畸形的,怎麽改都畸形。


感谢 TonyDeng老师 指点!!!

我在试图 使用 一个全局类 来 储存 Emp 窗体的值,然后 在 GetScore 窗体 通过 这个全局类来调用 BindList()。
请教您:这样可以吗?

但是,如何 定义 这个全局类,并 存储 Emp 窗体的值 呢? 我正在 网上搜素,思考中 ing ...
2014-02-07 18:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
WpfApplication1.zip (63.59 KB)

直接在單元格Cell上修改數據,不用另彈窗口。


[ 本帖最后由 TonyDeng 于 2014-2-7 19:50 编辑 ]

授人以渔,不授人以鱼。
2014-02-07 19:45
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
得分:0 
以下是引用TonyDeng在2014-2-7 19:45:48的发言:


直接在單元格Cell上修改數據,不用另彈窗口。


谢谢 TonyDeng 老师!!!

偶还是想练练窗体间的传值。Wpf不熟悉,对于俺这样的菜鸟,还是先把winform搞懂吧,
2014-02-07 21:02
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
这小MM真爱学习啊 PFPF

梅尚程荀
马谭杨奚







                                                       
2014-02-07 22:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-426994-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.129300 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved