none
有關元件Focus問題 RRS feed

  • 問題

  • 各位好,有個問題想向各位請教

    目前我設計的表單上有為數不少的TextBox元件

    每一個textbox都和資料庫的table作了databindings的設定

    但我發現當我keyin到textbox時,之後要寫入資料庫,會發生,最後一個輸入的值會無法正確寫入資料庫

    上網google了一下,有人是說因為focus沒有移到下一個元件,所以還呈現未編輯完的狀態

    於是我只好在按下新增之前,將focus移到別的元件上。這樣問題似乎可以解決。

    但之後又發現,如果今天textbox輸入的方式,不是動手keyin上去的,而是點選某些元件,然後把值帶到textbox上

    這會發生值完全無法寫入資料庫,於是逼得我又必須在每次在帶值回textbox時,就又要將focus移到該textbox,

    但問題是,我這些textbox是不給user看到的,visible要設為false的…如此這樣focus又無法設定了…

    不知有無解決的方法,可以順利寫入資料庫,然後textbox又是隱藏的…

    感謝~

     

     

    2010年10月10日 上午 07:44

解答

  • 有可能和以下文章的問題相關, 請參考一下:

    User Control Databinding Issue


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 菲羽 2011年11月15日 上午 07:14
    2010年10月12日 下午 07:10
    版主

所有回覆

  • 寫入前先呼叫AcceptChanges()
    2010年10月10日 上午 07:54
  • 目前我設計的表單上有為數不少的TextBox元件

    確認一下, 你寫的是 Web Form 還是 Winform?

    此外, 你不一定要把 TextBox 設為 Visible = false; 你也可以把它移到視窗以外的地方, 例如 (-200, -200), 如此仍然可以下 focus()。


    ASP.NET 2Share - http://www.dotblogs.com.tw/johnny ★請提問人注意: 我的回覆都只是基於我的雞婆與個人興趣; 為了不要因為我的雞婆與個人興趣引起別人的誤會, 敬請提問人*切勿*(就是「絕對不要」的意思)將我的任何回覆標示為解答。如果你一定要標, 麻煩往我樓上任選一個去標就行了。
    2010年10月10日 上午 08:24
  • 使用的平台是 WinForm

    剛才試了一下,由於我的表單上的元件很多,因此,我將每一個元件的值與自己寫的class作databindings,如此在寫入時,就僅傳遞該class

    因此,2F的大大給了一個 AcceptChanges這樣的方法,但我後來是用bindingsource這個元件的EndEdit()方法,

    如此看似可以寫入,但我又發現,只要我將該元件的 Visible = false ,則該元件的值就會無法寫入。

    我不懂 visible不是僅提供讓使用者看不看的到該元件嗎?

    當執行時 ,應該一樣可以在程式寫入或改變才是…為什麼一設為false就似乎找不到該控制項…

    所以導致binding也失效?

    2010年10月10日 上午 08:45
  • 將Visible=False設定成false的元件的ReadOnly一併設定成False看看是否可以解決?

    2010年10月12日 上午 01:56
  • tihs大大,你指的意思是 visible=false 和ReadOnly設為false 嗎?

    如果是這樣 那就不行…因為 Visible設為false 而ReadOnly的預設本來就是false…所以這和原本的情況是一樣的

    而如果將ReadOnly設為true,仍是不行…

    目前測試的結果是 如果單純只是元件隱藏,則在程式中改變或傳送其值,都不會有問題

    但如果元件處於隱藏,而且元件有作binding時,像是與物件或是table時,則會抓不到元件上的值

    不知是否因為隱藏,而使binding這動作失效。

     

     

    2010年10月12日 上午 09:36
  • 有可能和以下文章的問題相關, 請參考一下:

    User Control Databinding Issue


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 菲羽 2011年11月15日 上午 07:14
    2010年10月12日 下午 07:10
    版主