嗯,上周沒寫,在書店看了一夜的書,第二天睡了一天。
目前創(chuàng)新互聯(lián)建站已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、祁東網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
最近項(xiàng)目開發(fā)的差不多了(其實(shí)是在沒有服務(wù)和設(shè)備的情況下開發(fā)程序......),不過還好這兩天設(shè)備終于到了。
就目前的開發(fā)情況自問自答的寫一點(diǎn)心得,這其中一部分可以用于Winform開發(fā)。
問:關(guān)于DataGrid的使用和重繪
答:這個(gè)在之前的文章中給了一位大神重繪DataGrid的示例,本來我也想也一個(gè)差不多的然后放上來,不過看起來又要延后了。
問:如何實(shí)現(xiàn)輸入指定文本(如只接受數(shù)字,只接受正整數(shù)等),并在有錯(cuò)誤輸入的時(shí)候能夠回退到輸入之前的狀態(tài)
答:首先頁面要有一個(gè)緩存變量,然后在文本框的Text_Change事件里對(duì)緩存變量賦值,在有錯(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ù),這種是最簡(jiǎn)單的,最方便的(我是這樣認(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è)長(zhǎng)度為10的字符串,就會(huì)觸發(fā)10次Text_Change事件。
問:對(duì)于掃描到的數(shù)據(jù)的控制
答:因?yàn)槟壳绊?xiàng)目中要求掃描到的數(shù)據(jù)必須經(jīng)過后臺(tái)轉(zhuǎn)換才能顯示,所以,不能直接顯示掃描到的數(shù)據(jù)。目前我的解決方法有兩個(gè)。不過首先要設(shè)置掃描器在每次掃描的結(jié)果后面加一個(gè)回車鍵,這樣代表結(jié)束,便于判斷。
一個(gè)方法是在文本框的Text_KeyPress事件中判斷輸入的字符是不是回車鍵,如果是,則獲得文本框數(shù)據(jù),然后到后臺(tái)查詢轉(zhuǎn)換成對(duì)應(yīng)的數(shù)字,然后將該數(shù)值賦值到文本框中,所有操作在事件中進(jìn)行,這個(gè)方法的確定是,如果后臺(tái)服務(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) { //對(duì)迄今為止獲得的緩存數(shù)據(jù)傳回后臺(tái)處理 //然后賦值給頁面顯示 this.textBox2.Text = Handle(strtextbox2); //清空緩存 strtextbox2 = string.Empty; } else { //累積添加到緩存變量中 strtextbox2 += e.KeyChar; } //代表事件到此結(jié)束,不在向下傳遞 e.Handled = true; } }
好吧,暫時(shí)先這樣,以后想到什么再補(bǔ)充。
認(rèn)真活好每一天!
網(wǎng)站題目:關(guān)于WinCE開發(fā)的一些心得(2)
文章轉(zhuǎn)載:http://jinyejixie.com/article38/psipsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站策劃、ChatGPT、商城網(wǎng)站、全網(wǎng)營(yíng)銷推廣、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)