none
datagridview的欄位focus問題 RRS feed

  • 問題

  • 謝謝Bill Chung大大的幫忙.目前解決了grid的輸入長度及小寫轉大寫的問題

    這個很好用.貼上來希望可以幫助其他人..

       Private Sub DGV1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DGV1.EditingControlShowing
            activeColumnIndex = CType(sender, DataGridView).CurrentCell.ColumnIndex
            Select Case CType(sender, DataGridView).CurrentCell.ColumnIndex
                Case 1  'grid 欄位是 textbox 才能用
                    Dim tb As TextBox = DirectCast(e.Control, TextBox)
                    tb.MaxLength = 2  '*********設定輸入字元長度*********
                    AddHandler tb.KeyPress, AddressOf tb_KeyPress
                Case 6  'grid 欄位是 textbox 才能用
                    Dim tb As TextBox = DirectCast(e.Control, TextBox)
                    tb.MaxLength = 40
                    AddHandler tb.KeyPress, AddressOf tb_KeyPress
            End Select
        End Sub

        Private Sub tb_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
            Dim key As Char = e.KeyChar
            Dim value As Integer = AscW(key)
            Select Case activeColumnIndex
                Case 1
                    '**************以下小寫轉大寫***********
                    If (value >= 97 And value <= 122) Then
                        e.KeyChar = UCase(e.KeyChar)
                    End If
                    e.Handled = False
                Case 1
                    'MsgBox("1")
                Case 2
                    'MsgBox("2")
            End Select
        End Sub

    但是想再請問

    1.像我的第一個欄位是途程代號.輸入完後要檢查資料庫,如果不存在則秀msgbox並要停在原欄位,目前做不到,不知要如何做??

    2.前端textbox.MaxLength = 10,後端資料庫長varchar=10,但是textbox不管中英文字長度都是1,存到資料庫中文字可能會切一半,這個除了寫程式檢查外有沒有更簡單的方法??我都在存入前一個個檢查..

    謝謝!!


    hm_sys_09
    2011年3月4日 上午 09:55

解答

  • 1. 試著用 DataGridView.CellValidating 事件

    2. 用nvarchar 取代varchar, 這樣會以unocide方式存, 就不會出現中英文長度不一致


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

所有回覆

  • 1. 試著用 DataGridView.CellValidating 事件

    2. 用nvarchar 取代varchar, 這樣會以unocide方式存, 就不會出現中英文長度不一致


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 hm_sys_09 2011年3月6日 下午 10:32
    2011年3月5日 上午 09:23
    版主
  • 謝謝大人:感恩!!
    hm_sys_09
    2011年3月6日 下午 10:32