真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

關(guān)于WinCE開發(fā)的一些心得(2)

       嗯,上周沒寫,在書店看了一夜的書,第二天睡了一天。

目前創(chuàng)新互聯(lián)建站已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站運(yùn)營、企業(yè)網(wǎng)站設(shè)計(jì)、祁東網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

       最近項(xiàng)目開發(fā)的差不多了(其實(shí)是在沒有服務(wù)和設(shè)備的情況下開發(fā)程序......),不過還好這兩天設(shè)備終于到了。

       就目前的開發(fā)情況自問自答的寫一點(diǎn)心得,這其中一部分可以用于Winform開發(fā)。

問:關(guān)于DataGrid的使用和重繪

答:這個(gè)在之前的文章中給了一位大神重繪DataGrid的示例,本來我也想也一個(gè)差不多的然后放上來,不過看起來又要延后了關(guān)于WinCE開發(fā)的一些心得(2)關(guān)于WinCE開發(fā)的一些心得(2)。

問:如何實(shí)現(xiàn)輸入指定文本(如只接受數(shù)字,只接受正整數(shù)等),并在有錯(cuò)誤輸入的時(shí)候能夠回退到輸入之前的狀態(tài)

答:首先頁面要有一個(gè)緩存變量,然后在文本框的Text_Change事件里對緩存變量賦值,在有錯(cuò)誤輸入的時(shí)候?qū)⒕彺孀兞抠x值給文本框,就能實(shí)現(xiàn)回退

        //全局緩存變量
        private string strtextbox1 = string.Empty;
        //文本改變事件
        private void textBox1_TextChanged(object sender, EventArgs e)
        {   //判斷是否為正整數(shù)
             if (!string.IsNullOrEmpty(this.textBox1.Text) 
             && !Regex.IsMatch(this.textBox1.Text, @"^[0-9]\d*$"))
            {   //退回
                this.textBox1.Text = this.strtextbox1;
                MessageBox.Show("Error Input");
            }
            else
            {   //賦值
                this.strtextbox1 = this.textBox1.Text;
            }
        }

問:如何獲得WinCE設(shè)備上掃描到的數(shù)據(jù)

答:就目前我所知道的有兩種,一種是通過硬件廠商提供的SDK,通過掃描事件獲得數(shù)據(jù),這個(gè)方法的缺點(diǎn)是一旦更換成不同品牌的掃描設(shè)備就要修改代碼,所以非常麻煩;另一種就是焦點(diǎn)獲取數(shù)據(jù),這種是最簡單的,最方便的(我是這樣認(rèn)為的),這個(gè)功能由硬件廠商提供,當(dāng)掃描功能開啟時(shí),掃描到的數(shù)據(jù)會(huì)直接注入到目前焦點(diǎn)所在的地方(例如目前選中的文本框),如果沒有焦點(diǎn),一般會(huì)出現(xiàn)一個(gè)Demo,提示你無需調(diào)用SDK就可以將獲取數(shù)據(jù)之類的說明,其具體的原理,貌似是和鍵盤輸入一樣。這個(gè)方法的問題在于控件焦點(diǎn)的控制。

問:掃描到的數(shù)據(jù)是怎么注入到文本框中的?

答:就目前我所知道的情況,和鍵盤輸入一樣,是一個(gè)一個(gè)字符添加到文本框的,所以每添加一次就會(huì)觸發(fā)一次Text_Change事件,例如掃描到的數(shù)據(jù)是一個(gè)長度為10的字符串,就會(huì)觸發(fā)10次Text_Change事件。

問:對于掃描到的數(shù)據(jù)的控制

答:因?yàn)槟壳绊?xiàng)目中要求掃描到的數(shù)據(jù)必須經(jīng)過后臺轉(zhuǎn)換才能顯示,所以,不能直接顯示掃描到的數(shù)據(jù)。目前我的解決方法有兩個(gè)。不過首先要設(shè)置掃描器在每次掃描的結(jié)果后面加一個(gè)回車鍵,這樣代表結(jié)束,便于判斷。

一個(gè)方法是在文本框的Text_KeyPress事件中判斷輸入的字符是不是回車鍵,如果是,則獲得文本框數(shù)據(jù),然后到后臺查詢轉(zhuǎn)換成對應(yīng)的數(shù)字,然后將該數(shù)值賦值到文本框中,所有操作在事件中進(jìn)行,這個(gè)方法的確定是,如果后臺服務(wù)比較卡,可能會(huì)導(dǎo)致客戶看到不應(yīng)該顯示的數(shù)據(jù)。

另一個(gè)則是我從網(wǎng)上查到的,首先將頁面的KeyPreview設(shè)置為true,然后在頁面上的KeyPress事件中捕獲篩選所需的文本。這樣做的好處是只有在全部處理結(jié)束后才顯示文本,不會(huì)讓客戶看到錯(cuò)誤的數(shù)據(jù)。

        //處理掃描數(shù)據(jù)的方法
        private string Handle(string str)
        {
            return str;
        }
        //全局緩存變量
        private string strtextbox2 = string.Empty;
        //窗體按鍵事件
        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {   //判斷是否是指定控件處于焦點(diǎn)狀態(tài)
            if (this.textBox2.Focused)
            {   //判斷輸入的是不是回車鍵
                if (e.KeyChar == (char)Keys.Enter)
                {   //對迄今為止獲得的緩存數(shù)據(jù)傳回后臺處理
                    //然后賦值給頁面顯示
                    this.textBox2.Text = Handle(strtextbox2);
                    //清空緩存
                    strtextbox2 = string.Empty;
                }
                else
                {   //累積添加到緩存變量中
                    strtextbox2 += e.KeyChar;
                }
                //代表事件到此結(jié)束,不在向下傳遞
                e.Handled = true;
            }
        }

好吧,暫時(shí)先這樣,以后想到什么再補(bǔ)充。

認(rèn)真活好每一天!


本文題目:關(guān)于WinCE開發(fā)的一些心得(2)
轉(zhuǎn)載源于:http://weahome.cn/article/psipsp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部