伊莉討論區

標題: TextBox選擇事件的問題及anchor問題[已解決] [打印本頁]

作者: 天兵才子    時間: 2015-4-4 02:25 PM     標題: TextBox選擇事件的問題及anchor問題[已解決]

提示: 作者被禁止或刪除 內容自動屏蔽
作者: Jeepluo    時間: 2015-4-6 08:00 AM

可不出你程式與你所要做的有何相關
你的程式:
  1. Private Sub TEXT1_TextChanged(sender As Object, e As EventArgs) Handles TEXT1.TextChanged

  2. If TEXTBOX1.Items.Count > 0 Then
  3. TEXTBOX1SelectedIndex = 1
  4. TEXTBOX1.Text = String.Empty
  5. End If

  6. End Sub
複製代碼
這一段程式怎麼看就是怪怪的
1.TEXTBOX1SelectedIndex → 這是指令還是變數
2.當你的 TextBox1.Item.Count > 1 時 TextBox1.Text = "" , 那你的 TextBox1.Text 永遠都是空的。
其他問題:
1.你的伺服器是什麼沒有說明?
2. text1.text 是畫面中的那一個物件?
3.一般來說下命令最好再加一個按鈕,按Enter很容易誤按的(當然要做一定可行的)。
作者: 天兵才子    時間: 2015-4-6 09:47 AM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: rr09192084    時間: 2015-4-6 12:47 PM

本帖最後由 rr09192084 於 2015-4-6 04:20 PM 編輯

A1:你的輸入只有ComboBox和TextBox兩個元件,一般來說ComboBox只有[有選]跟[沒選]兩種狀態,應該不會有資料輸入錯誤的選項。那就只有TextBox有輸入錯誤的可能,你這裡是要限制只能輸入數字而且長度必須是6,所以你應該朝這個方向去設計你的程式。我提供你這些程式碼,你要是看得懂就應該可以拿來應用。
  1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.         Text1.ShortcutsEnabled = False  '不啟用快速鍵
  3. End Sub

  4. Private Sub Text1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Text1.KeyPress
  5.         If Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar) Then
  6.             e.Handled = False
  7.         Else
  8.             e.Handled = True
  9.         End If
  10. End Sub
複製代碼
A2:你要先將你裡面的DataGridView元件設定[停駐於父容器中],然後把外面的GroupBox的ANCHOR屬性 上下左右都打勾

作者: hatakc56923us    時間: 2015-4-6 01:00 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: hatakc56923us    時間: 2015-4-6 01:01 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: hatakc56923us    時間: 2015-4-6 01:05 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: hatakc56923us    時間: 2015-4-6 01:06 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: hatakc56923us    時間: 2015-4-6 01:33 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: 天兵才子    時間: 2015-4-6 04:16 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: 天兵才子    時間: 2015-4-6 04:17 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: rr09192084    時間: 2015-4-6 04:41 PM

清空COMBOBOX要這樣做
  1. textbox1.SelectedIndex = -1
複製代碼
才對
作者: hatakc56923us    時間: 2015-4-6 04:51 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: hatakc56923us    時間: 2015-4-6 04:52 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: rr09192084    時間: 2015-4-6 04:58 PM

在Form Load區段加上
  1. Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable
複製代碼
應該可以解決不能拉大的問題
作者: 天兵才子    時間: 2015-4-6 07:02 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: 天兵才子    時間: 2015-4-6 07:05 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: 天兵才子    時間: 2015-4-6 07:05 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: rr09192084    時間: 2015-4-6 10:34 PM

  1.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  2.         text1.ShortcutsEnabled = False  '不啟用快速鍵
  3.         Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable '允許自行拉大視窗
  4.         'GroupBox的Anchor屬性 上 下 左 右 都勾選的指令
  5.         GroupBox1.Anchor = AnchorStyles.Bottom + AnchorStyles.Left + AnchorStyles.Right + AnchorStyles.Top
  6.         'DataGridView的停駐於父容器的指令
  7.         DataGridView1.Dock = DockStyle.Fill
  8.         Label1.Text = ""
  9.     End Sub

  10.     Private Sub text1_TextChanged(sender As Object, e As EventArgs) Handles text1.TextChanged
  11.         '這個寫法直接輸入6位數字時就會去撈資料,不需要按ENTER
  12.         '符合以下3個條件
  13.         '先去ComboBox選取了資料(Items是從0開始算起的)
  14.         '輸入的資料是數字
  15.         '長度要剛好是6位數
  16.         If textbox1.SelectedIndex >= 0 And IsNumeric(text1.Text) And text1.Text.Length = 6 Then
  17.             GetData() '條件符合了就直接去資料庫撈資料
  18.         ElseIf Not IsNumeric(text1.Text) And text1.Text.Length > 0 Then
  19.             '有錯的話就清空ComboBox和TextBox
  20.             Label1.Text = ""
  21.             textbox1.SelectedIndex = -1 '清空ComboBox指令
  22.             MessageBox.Show("輸入資料 " + text1.Text + " 格式有錯誤")
  23.             text1.Clear() '清空TextBox
  24.             textbox1.Focus() '然後游標(焦點)切換回到ComboBox裡
  25.         End If
  26.     End Sub

  27.     Private Sub textbox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles textbox1.SelectedIndexChanged
  28.         If textbox1.SelectedIndex >= 0 And IsNumeric(text1.Text) And text1.Text.Length = 6 Then
  29.             GetData() '如果先去TextBox輸入資料再來ComboBox選取資料,符合規則的話也去資料庫撈資料
  30.         End If
  31.     End Sub

  32.     Private Sub GetData() '這就是去資料庫撈資料的程式
  33.         '先前已經將資料格式檢查好了,這裡就不再需要檢查輸入的資料了
  34.         Label1.Text = textbox1.Text + " " + text1.Text '這只是測試用而已
  35.         '詳細的撈資料程式放在這裡
  36.         '........................
  37.         '........................
  38.     End Sub
複製代碼
這是詳細的程式碼,你參考看看吧,已經給你完整答案了,你應該多看看有關[事件]的資料,這是程式設計的基礎。
作者: rr09192084    時間: 2015-4-6 10:46 PM

  1. textbox1.SelectedIndex = -1 '清空ComboBox指令
  2. text1.Clear() '清空TextBox
  3. textbox1.Focus() '然後游標(焦點)切換回到ComboBox裡
複製代碼
GetData()這函式的最後再加上面3行,撈完資料後讓程式回到原先設計流程。




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!