亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

拖放到網格后如何在應用程序中重新獲得焦點

拖放到網格后如何在應用程序中重新獲得焦點

C#
慕容3067478 2021-11-14 17:01:33
在我的應用程序中,我有一個帶有兩個面板的表單。一個面板里面是一個按鈕。在另一個內部是一個 DevExpress Grid 控件。網格由 3 列組成。您可以將值從一列拖到另一列中以進行復制。我的問題是,每當我從一列拖放到另一列時,對應用程序的關注就會進入一種不尋常的狀態。網格保持聚焦;我可以將鼠標懸停在標題上并看到它們正常反應。然而,應用程序的其余部分并未集中。將鼠標懸停在另一個面板中的按鈕上沒有反應,菜單或表單控件也沒有反應。如果我單擊該按鈕,它的反應就像我單擊了一個未聚焦的應用程序一樣。我必須再次單擊才能真正激活按鈕。除了網格之外的每個控件都相同。我曾嘗試在按鈕和表單上使用 Activate() 和 Focus() 但無濟于事。namespace Company.StuffUploader{    public partial class ComputationGrid : DevExpress.XtraEditors.XtraUserControl    {        private BindingList<ComputationLinkModel> _links = new BindingList<ComputationLinkModel>();        public List<ComputationLinkModel> ComputationLinkModels        {            get            {                return new List<ComputationLinkModel>(_links);            }        }        public ComputationGrid()        {            InitializeComponent();        }        private void ComputationGrid_Load(object sender, EventArgs e)        {            _gridControl.DataSource = _links;        }        private DragDropEffects GetDragEffect(DragEventArgs e)        {            var text = e.Data.GetData("System.String") as string;            if (text == null)                return DragDropEffects.None;            var link = GetLinkFromScreenPoint(new Point(e.X, e.Y));            if (link == null)                return DragDropEffects.None;            var tokens = text.Split('\t');            if (tokens.Count() != 2)                return DragDropEffects.None;            var dateString = link.movedate.ToString("yyyy-MM-dd");            if (link.StuffSurfaceName == tokens[0] && dateString != tokens[1])                return DragDropEffects.Move;            else                return DragDropEffects.None;        }        private ComputationLinkModel GetLinkFromScreenPoint(Point screenPt)        {            var pt = _gridControl.PointToClient(screenPt);            var hitInfo = _gridView.CalcHitInfo(pt);            return _gridView.GetRow(hitInfo.RowHandle) as ComputationLinkModel;        }
查看完整描述

2 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

確保在 GridView 的 Mouse~ 事件處理程序中將DXMouseEventArgs.Handled屬性設置為 true。它保證這些事件的默認處理將被禁止。查看此示例以了解如何執行此操作。


查看完整回答
反對 回復 2021-11-14
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

我想出了我自己的問題。從 MouseDown 事件中調用 DoDragDrop() 似乎無法正常工作。正確的方法是從 MouseMove() 調用它。MSDN 上文檔在其示例代碼中暗示了這一點。


查看完整回答
反對 回復 2021-11-14
  • 2 回答
  • 0 關注
  • 203 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號