WPF DataGrid實現單擊單元格直接編輯
(純新手,第一次用VS,很多不懂,歡迎指點)
目前在做一個PC軟體,需要一個多行多列資料錄入的編輯介面
DataGrid可以繫結資料來源,非常好用,但它有個特性卻很不友好:單擊先選中單元格,再點選才能編輯,無法直接改掉這個設定
折騰了好多天,多虧有位前輩大佬指點意見
原本我的思路是捕獲滑鼠點選時的座標,根據橫座標來讓相應位置的控制元件獲得焦點,但大佬直接給了個更簡單的思路:讓單擊變成雙擊
思路是簡單,但對於我這純粹的新手而言,問題還是有的
問題點一:如何觸發事件
我是從這篇英語博文學習到的:https://stackoverflow.com/questions/28168645/automatic-editing-of-wpf-datagrid-content-when-datagrid-cell-gets-focus
<DataGrid AutoGenerateColumns="False" SelectionUnit="Cell" >
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<EventSetter Event="GotFocus" Handler="myDataGridMain_GotFocus"></EventSetter>
</Style>
</DataGrid.CellStyle>
SelectionUnit=“Cell”,作用是讓單擊時選中行,直接變成選中單元格,這一步挺重要的
然後在DataGird下面新增CellStyle,來設定單元格事件
問題點二:如何單擊變雙擊
找了好幾篇其實內容都一樣的文章,最終是在這裡下載的原始碼:https://www.zhaokeli.com/article/8124.html
說實話,整篇程式碼很長,我沒細看,只是拿來就用,但用的時候出現了兩個小問題
我並不確定是因為版本更新導致的,還是原始碼敲的時候就有錯誤,但將就著改了,能用,直接附上我改後的程式碼下載連結:https://download.csdn.net/download/jdjdjdjdjdjd/10852246
沒有幣下載也沒關係,可以下載原始碼,自己修改,問題只有兩處:
一處是有兩個Point應該是System.Windows.Point(反正我改過來後就可用了),但原始碼是Drawing.Point(執行後報錯-名稱空間“System.Drawing”中不存在型別或名稱空間名“Point”);
一處是以下這個方法裡的point.x,point.y,強轉為int(原本是沒有強轉的,執行後會報錯)
public static void MoveTo(System.Windows.Point point)
{
SendMouseInput((int)point.X, (int)point.Y, 0, NativeMethods.SendMouseInputFlags.Move | NativeMethods.SendMouseInputFlags.Absolute);
}
做完以上工作,將程式碼新增到專案後,事件內一句程式碼就搞定了
private void myDataGridMain_GotFocus(object sender, RoutedEventArgs e)
{
Demo.Mouse.DoubleClick(MouseButton.Left);
}
相關文章
- 【轉載】SAP ABAP ALV報表控制編輯行,編輯單元格
- vxe-table grid 分享實現單元格編輯表格表尾合計實時計算
- 【C#】【DevExpress】自定義單元格右鍵選單,去除單元格編輯時,載入系統的預設選單C#devExpress
- ElementUI表格行編輯單元格編輯支援(輸入框,選擇框)DemoUI
- js實現table合併相同列單元格JS
- WPF一個簡單的屬性編輯控制元件控制元件
- WPF datagrid mvvm multi select via customize datagridMVVM
- 分割單元格
- wpf datagrid樣式
- WPF DataGrid ItemsSource StaticResource
- 簡單的低開編輯器(二):實現元件拖拽元件
- Java Servlet 實現合併多單元格匯出ExcelJavaServletExcel
- WPF Datagrid display via DataGridTemplateColumn
- WPF datagrid scrollintoview in ViewModel of MVVMViewMVVM
- WPF實現樹形下拉選單框(TreeComboBox)
- WPF實現Win10漢堡選單Win10
- 簡單的文字編輯
- VUE+Element UI實現簡單的表格行內編輯效果VueUI
- 超簡單整合!手把手教你實現音訊編輯能力音訊
- jQueryEasyUI重寫datagrid的datetimebox編輯型別jQueryUI型別
- WPF datagrid show ImageBrush via DataGridTemplateColumn
- 效率爆表!EasyExcel合併單元格這樣實現才是yydsExcel
- NPOI擴充套件--判斷指定單元格是否為合併單元格和輸出該單元格的行列跨度(維度)套件
- 簡單的低開編輯器(三):實現元件畫布內拖拽元件
- 實現單擊一級選單顯示或隱藏二級選單
- 普通填報表單元格實現資料二次篩選
- JavaScript 遍歷td單元格JavaScript
- js 表格合併單元格JS
- 表格td單元格合併
- vue表格合併單元格Vue
- 單元格資料鑽取
- 如何標記excel單元格Excel
- EasyExcel-合併單元格Excel
- POI設定excel單元格Excel
- WPF datagrid datagridtemplatecolumn DataGridTemplateColumn.CellEditingTemplate DataGridComboBoxColumn
- WPF SelectedItemCollection convert to IList and List, such as Datagrid SelectedItems
- WPF custom control contains datagrid,listbox,imageAI
- WPF datagrid scrolldown and change the marked the location in canvasCanvas