日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在用数据绑定的时候我为什么不能把焦点移出(Tab out)我的控件?(译)

發布時間:2025/7/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在用数据绑定的时候我为什么不能把焦点移出(Tab out)我的控件?(译) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[譯自MS發布的一個有關數據綁定的FAQ]

默認情況下,簡單數據綁定把對綁定的數據源的更新作為控件驗證操作的一部分。控件驗證發生在控件失去焦點的時候,而控件失去焦點發生在用戶使用
Tab鍵或者鼠標點擊離開控件的時候。如果在驗證處理過程中發生了一個錯誤,Windows窗體將取消驗證操作,并且焦點將不會移動到下一個控件。例如,假設你把TextBoxText屬性綁定到一個數據源的整型屬性上,當用戶把焦點移出TextBox的時候,驗證操作發生了,并且數據綁定引擎(Binding類型)將試圖用被綁定控件的值(TextBox.Text)更新數據源屬性,如果在數據源更新過程中一個錯誤(異常)發生了,綁定引擎的默認行為將使驗證操作失敗,并阻止焦點離開這個TextBox

需要特別注意的是,如果一個錯誤發生了,那么綁定引擎必須假定顯示給用戶的值(TextBox.Text)與數據源屬性中的值是不一致的。在這種情況下,重要的是或者讓用戶感覺好像綁定成功了(安靜的失敗),或者顯示一個擾人的對話框。因為這個原因,默認的行為是把用戶限制到這個控件上,直到他們輸入一個正確的值。

VS2005中,有2個方法可以在一個綁定發生錯誤時向用戶提供反饋。其中最簡單的方法是添加一個ErrorProvider到窗體,然后設置ErrorProvider.DataSource到與綁定相同的數據源。另一種方法,你可以為綁定添加一個BindingComplete事件的處理方法,并且在這個處理方法中寫入你自己的錯誤處理邏輯。

例子:(原文中的例子,因為加入了很多checkbox供條件選擇,雖然執行效果上不錯,但是代碼反而有些零亂,因此我在這里自己提供2個簡單示例

示例一(利用ErrorProvider):

//在窗體中加入一個屬性

????????????? private int m_PropertyOfInt;

????????????? public int PropertyOfInt

????????????? {

???????????????????? get { return m_PropertyOfInt; }

???????????????????? set { m_PropertyOfInt = value; }

? }

//在窗體中加入一個TextBox,命名為tb,再加入另外一個TextBox,命名為tb2,加入一個ErrorProvider組件,命名為ep

//在窗體構造方法中寫入如下代碼:

public Form1()

????????????? {

???????????????????? InitializeComponent();?

???????????????????? //加入如下代碼

???????????????????? ep.DataSource = this;

???????????????????? Binding tbBind = new Binding("Text", this, "PropertyOfInt", true);

???????????????????? tb.DataBindings.Add(tbBind);

? }

編譯運行,在tb中輸入幾個非數字字符,然后按Tab鍵或者用鼠標點擊tb2,這時,應該可以看到在tb右側會出現ErrorProvider的紅色嘆號錯誤警示,同時焦點仍在tb中。

示例二(自定義錯誤處理,讓焦點即使在發生錯誤之后也可以移出被綁定控件):

//參照示例一同樣加入PropertyOfInt屬性,tb1tb2,但是不需要加入ErrorProvider

public Form1()

????????????? {

???????????????????? InitializeComponent();

?

???????????????????? Binding tbBind = new Binding("Text", this, "PropertyOfInt", true);

???????????????????? tb.DataBindings.Add(tbBind);

???????????????????? tbBind.BindingComplete += delegate(object sender, BindingCompleteEventArgs e)? //VS2005 支持匿名委托

???????????????????? {

??????????????????????????? if (e.Exception != null)

??????????????????????????? {

?????????????????????????????????? MessageBox.Show(e.Exception.Message);? //顯示一個消息框

?????????????????????????????????? //或者:MessageBox.Show(e.ErrorText);

?????????????????????????????????? e.Cancel = false;? //不取消事件的值,結果是焦點可以移動到下一個控件,但是此時TextBox.Text將和PropertyOfInt的值不一致

??????????????????????????? }

???????????????????? };

???????? }

轉載于:https://www.cnblogs.com/Ricky81317/archive/2006/12/23/601013.html

總結

以上是生活随笔為你收集整理的在用数据绑定的时候我为什么不能把焦点移出(Tab out)我的控件?(译)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女精品在线观看 | 国产学生美女无遮拦高潮视频 | 久久亚洲中文字幕无码 | 国产在线毛片 | 日韩一区二区久久 | 黄色大片免费观看 | 成人四色 | 欧美一区二区三区久久久 | 成人天堂噜噜噜 | 国产第一页第二页 | 91精品国产高清一区二区三区蜜臀 | 日本一区不卡视频 | 日韩一区在线播放 | 国产v亚洲v天堂无码 | 国模无码视频一区二区三区 | 欧美色成人 | 91人人澡人人爽人人精品 | 中文成人在线 | 欧美亚洲视频在线观看 | www.久久av.com| 九九综合九九 | 国产激情自拍 | 久草综合在线观看 | 欧美另类69 | 激情五月色综合国产精品 | 99riav国产精品视频 | jzzjzz日本丰满少妇 | 国产大片一区二区 | 欧美性潮喷xxxxx免费视频看 | 欧美成一区二区三区 | 亚洲成年人网站在线观看 | 日韩男女视频 | 亚洲vs天堂 | 久久人爽 | 动漫一区二区三区 | av免费高清 | 国产高清sp | 久久黄色 | 香蕉一区二区三区四区 | 欧美一区成人 | www国产com | 国产精品7 | 91色| 欧美乱妇18p | 亚洲乱熟女一区二区三区小说 | 涩涩成人网 | 视色影院| 亚洲你懂的| 国内精品视频在线播放 | 欧美亚洲网站 | 一级黄色片在线观看 | 免费的毛片网站 | 中出亚洲 | 爱爱视频在线播放 | 国产精品精品国产 | 国产精品久久久网站 | 亚洲国产精品无码观看久久 | 日韩在线播放视频 | 可以在线观看的av网站 | 热の国产 | 亚洲精品中文字幕乱码三区 | www,久久久 | 377p粉嫩大胆色噜噜噜 | av啊啊 | 黑白配av | 国产免费观看久久黄av片 | 色网在线免费观看 | 日韩中文一区二区三区 | 深夜福利成人 | 久久叉| 最新最近中文字幕 | 1024欧美 | 亚洲大尺度视频 | 不卡的av在线播放 | 亚洲欧美国产高清va在线播放 | 欧美成人免费在线观看 | 色噜噜狠狠成人中文 | 伊人啪啪网 | 三级久久久 | av毛片网站 | 五十路中出 | 九九视频免费在线观看 | 免费在线中文字幕 | 国产91在线免费观看 | 亚洲视频在线观看网站 | 国产美女无遮挡免费 | 能在线观看的av | 成年人小视频在线观看 | 中文字幕在线播放视频 | 国产黄频在线观看 | 成人av播放 | 免费在线观看网址 | 国产做爰xxxⅹ高潮视频12p | 亚洲专区免费 | 国产精品女教师 | 国产午夜一区 | 国产激情久久久久久熟女老人av | 四虎在线精品 | 黄页网址大全免费观看 |