翻譯|使用教程|編輯:龔雪|2024-10-12 11:15:57.300|閱讀 109 次
概述:本文主要為大家介紹如何用DevExpress WinForms中熱門的數(shù)據(jù)網(wǎng)格組件完成信息點擊獲取,歡迎下載最新版體驗~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在使用DevExpress WinForms的Data Grid之類控件時,可能需要實現(xiàn)自定義用戶交互,例如顯示數(shù)據(jù)行的上下文菜單,或者在雙擊一行時調(diào)用編輯表單。在這些情況下,您需要在指定的坐標處標識網(wǎng)格元素。
在本教程中,您將學習如何獲取此信息。首先將顯示工具提示,指示當前在鼠標光標下的是哪個元素;然后將使用命中信息來實現(xiàn)自定義過濾UI。當最終用戶右鍵單擊列單元格時,將根據(jù)所單擊的單元格的值過濾該列。通過單擊自動篩選行,他們可以清除單個列或整個視圖中的篩選器。
P.S:DevExpress WinForms擁有180+組件和UI庫,能為Windows Forms平臺創(chuàng)建具有影響力的業(yè)務(wù)解決方案。DevExpress WinForms能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無論是Office風格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!
獲取DevExpress WinForms v24.1正式版下載
DevExpress技術(shù)交流群10:532598169 歡迎一起進群討論
從一個具有啟用了自動篩選行的GridControl的應(yīng)用程序開始。
跳轉(zhuǎn)到設(shè)計時,將組件放到窗體上,并將其分配給網(wǎng)格的屬性。
然后,處理ToolTipController的事件。在事件處理程序中,調(diào)用View的方法,該方法接受網(wǎng)格中的坐標,并返回一個新創(chuàng)建的hit信息對象,該對象包含View元素在指定位置的信息。使用 屬性來獲得目標元素類型,最后將元素的名稱設(shè)置為工具提示文本。
C#
private void toolTipController1_GetActiveObjectInfo(object sender, ToolTipControllerGetActiveObjectInfoEventArgs e) { if (e.SelectedControl != gridControl1) return; GridView view = gridControl1.FocusedView as GridView; // Obtain hit information. GridHitInfo gridHitInfo = view.CalcHitInfo(e.ControlMousePosition); // Display the name of the element under a test point. object o = gridHitInfo.HitTest.ToString(); string text = gridHitInfo.HitTest.ToString(); e.Info = new ToolTipControlInfo(o, text); }
運行應(yīng)用程序來查看結(jié)果,當您用鼠標指針懸停網(wǎng)格控件元素時,工具提示將顯示目標元素的名稱。
現(xiàn)在看看如何使用點擊信息來修改用戶交互。
關(guān)閉應(yīng)用程序,選擇網(wǎng)格并處理其MouseDown事件。和前面一樣,調(diào)用方法來獲取hit信息對象,檢查它是否是右鍵,以及測試點是否在網(wǎng)格行內(nèi)。
屬性標識被單擊的行,檢查此屬性是否返回自動篩選器行句柄。如果測試點位于自動篩選行指示符中,則通過調(diào)用網(wǎng)格的對象的Clear方法清除所有應(yīng)用的篩選條件。如果單擊不在行指示符區(qū)域中,則必須在其中一列中。使用hit info對象的屬性獲取目標列,并僅清除該列的過濾器。
如果單擊是在一行上,而不是在自動篩選器行上,則代碼假定它是其中一個數(shù)據(jù)行。為了獲得被點擊單元格的值,調(diào)用網(wǎng)格的方法,并傳遞被點擊的info對象的 和屬性,然后使用返回值篩選單擊的列。
C#
private void gridControl1_MouseDown(object sender, MouseEventArgs e) { GridView view = (sender as GridControl).FocusedView as GridView; // Obtain hit information. GridHitInfo hitInfo = view.CalcHitInfo(new Point(e.X, e.Y)); // Check whether an end-user right-clicked a grid row. if (((e.Button & MouseButtons.Right) != 0) && (hitInfo.InRow)) { // Specify actions for the auto-filter row. if (hitInfo.RowHandle == GridControl.AutoFilterRowHandle) // If the target element is a row indicator, clear the current filter. if (hitInfo.HitTest == GridHitTest.RowIndicator) view.ActiveFilter.Clear(); // Clear the column's filter. else hitInfo.Column.FilterInfo = new ColumnFilterInfo(); // Filter grid data by the target cell's value. else { object value = view.GetRowCellValue(hitInfo.RowHandle, hitInfo.Column); hitInfo.Column.FilterInfo = new ColumnFilterInfo(hitInfo.Column, value); } } }
運行應(yīng)用程序,右鍵單擊任何具有New狀態(tài)的單元格,可以看到網(wǎng)格的數(shù)據(jù)現(xiàn)在已被此值過濾。以同樣的方式,通過單擊Low優(yōu)先級和Mike Roller單元格篩選數(shù)據(jù)。然后,右鍵單擊自動篩選行中的Priority單元格來清除此列的篩選,右鍵單擊自動過濾器行的指示符,以清除所有現(xiàn)有的過濾器設(shè)置。
更多產(chǎn)品資訊及授權(quán),歡迎“”!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)