| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4071 人关注过本帖
标题:求教:窗体的 静态 类变量的 作用
取消只看楼主 加入收藏
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
等问题搞明白了,再结贴,可以吗?
多谢版主!!!
2014-02-05 12:32
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
很感谢TonyDeng老师的 指导,获得了不少新概念,比如数据要与界面分离,虽然学了点三层架构,但概念还是比较生疏的。

我提交的问题,是授课老师讲解静态变量时的举例,因基础差,当时没理解,一直在郁闷中求得理解。

您能 帮助 指导 理解一下 为什么会出现“你重新生成一個Emp對象,這個對象沒有執行InitData(),裏面是空的” 问题??

谢谢您!!!
2014-02-05 16:09
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
以下是引用TonyDeng在2014-2-5 16:30:23的发言:

你在點擊【評分】的方法中設置斷點,逐行跟踪程序的流程看看都幹了些什麽不就知道了麽。
俺只是看到了如下问题 → :但不懂 为什么会出现下面的问题,都 new 了呀,
为啥还出现 “未将对象引用设置到对象实例”??


public void BindList()
        {
            //清空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);
            }
        }
2014-02-05 16:46
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
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
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
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
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
谢谢 有容就大 夸奖
2014-02-07 22:42
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
因为初学,首先接触的是winform,而且还在入门阶段,有些问题没搞清楚,先弄懂winform,再学习先进的wpf会更容易吧。
多谢 有容就大老师 的鼓励!!!
2014-02-08 11:08
快速回复:求教:窗体的 静态 类变量的 作用
数据加载中...
 
   



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

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