Re: [.NET] vb.net如何設定DataGridView中的select …

看板Visual_Basic作者 (還在想)時間15年前 (2009/08/04 23:19), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
※ 引述《aMaa (aMa)》之銘言: : 通常DataGridView中有無設定.selectMode,當user按DataGridView某一地方時 : 就會出現藍色反白的區塊(可能是藍色反白一筆紀錄) : 如何設定,user點選DataGridView的任何地方不會出現選取中藍色反白的區塊, : 因為我程式有寫用其他顏色來表示已選取的紀錄, : 所以藍色反白的區塊功用多了並外觀上不妥, : 請各位為我解答,謝謝! 又是我來了,嘿嘿 上個問題妳解決了沒阿? 有沒有解決到都至少說一聲吧 DataGridView 剛好我上學期的期末作業有用到過 我用它的作用是拿來顯示經過Select語句後的資料表(DATA TABLE) 因為想弄的接近直覺化的選取 所以想作成 當選取其中一個Cell時 就會找出這筆Cell的位置,判斷它是第幾筆、以及是第幾欄的資料 在下面的修改區直接顯示該筆資料出來,並自動跳至選中的Cell對應的修改欄位 看了妳的問題後 覺得妳這要求或許可以使用我這做法加以變形來解決 重點就是選中時不要讓DataGridView產生選中狀態 只用妳自己的表達方式來呈現"選中"的動作吧? 我該程式的做法是這樣的: 在該DataGridView中 於其的CellClick、CellEnter、CellMouseClick、CellStateChanged事件中 反正就是在於任何會改變選取狀態的事件中 引發同一個共同的Sub(或Functin,看妳需要),在這我取名叫CellSelected CellSelected接受三個引數: sender As Object, RowIndex As Integer, ColumnIndex As Integer 呼叫CellSelected時,就把呼叫者sender傳入 並將e.Cell.RowIndex(上面所說的事件都會產生這個參數)傳給RowIndex e.Cell.ColumnIndex就傳給第三個參數ColumnIndex (其實也可以直接用Handle的方式直接Handle這些東西 不過反正原理相同,只是多做一步) 接著進行一些判斷 先判斷RowIndex的值,因為如果沒有真正選到某筆記錄 只是因為按到其他地方引發的話 這個值會是-1 (計數從0開始) 真的有選到(大於-1時)才要進入主要工作 另外columnIndex也會有類似情況,但可能發生的是 在最左邊的欄位上選擇一整個Row,此時會有RowIndex,但不會有ColumnIndex(-1) 在這我是把columnIndex放在RowIndex判斷裡面,並於其他事情都作完了才去判斷 因為我設計接受使用者按一整行而非只按一格Cell的情形 (這邊就看妳想怎麼做了) 因為妳要做的是不要讓DataGridView產生選取狀態 所以就是讓選取狀態從"是"變成"否" DataGirdView1.Rows(i).Selected = False (i就是被選取的那一行的RowIndex啦) 就可以讓該行選取狀態取消 但是同要要注意,Cell的選取跟一整個Row的選取是分開來的 如果發生了其實只有選到一格的情況 就還需要 DataGridView1.CurrentCell.Selected = False 這樣的做法 只是反過來說,CurrentCell也有可能不存在 所以這也是妳要先判斷的 另外,因為妳要用自己的顏色表示選取狀態 這個我沒做也不知道妳要怎麼做 不過在剛剛的判斷中 最好找個變數儲存被選中的RowIndex跟ColumnIndex 這樣應該比較方便於,讓妳自訂被選中Cell的外觀 因為畢竟,前面就已經把所有選取狀態給取消了 總要留個根據可以修改,這是我的想法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.237.114

08/04 23:22, , 1F
對了,如果妳的DataGridView支援複選,那情形就又不同了
08/04 23:22, 1F
※ 編輯: Peruheru 來自: 118.168.237.114 (08/04 23:24)

08/06 15:05, , 2F
謝謝你喔,上個問題已經解決了,問題在於我TAB是自動NEW的,
08/06 15:05, 2F

08/06 15:05, , 3F
重新載入時忘記把之前NEW的tabcontrol清除,所以舊的一直蓋在
08/06 15:05, 3F

08/06 15:06, , 4F
新new出來的tabcontrol上面,才看不出有新new的tabpage
08/06 15:06, 4F

08/06 15:06, , 5F
目前這個問題我還在解 ^^"
08/06 15:06, 5F
文章代碼(AID): #1AU56QwL (Visual_Basic)