第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

ObjectListView 忽略拖動效果

ObjectListView 忽略拖動效果

C#
慕哥9229398 2022-12-04 10:50:24
您好,我正在為我的應用程序使用 ObjectListView。我試著做一個花哨的拖動效果,因為原來的藍色效果不太好。這就像我拖動時突出顯示第一列。我在我的普通列表視圖上使用它        private void lvPlaylist_DragOver(object sender, DragEventArgs e)        {            Point mLoc = lvPlaylist.PointToClient(Cursor.Position);            var hitt = lvPlaylist.HitTest(mLoc);            if (hitt.Item == null) return;            int idx = hitt.Item.Index;            if (idx == prevItem) return;            lvPlaylist.Refresh();            using (Graphics g = lvPlaylist.CreateGraphics())            {                Rectangle rect = lvPlaylist.GetItemRect(idx);                Pen MyPen = new Pen(Color.OrangeRed, 3);                g.DrawLine(MyPen, rect.Left, rect.Top, rect.Right, rect.Top);            }            prevItem = idx;        }但它在 ObjectListView 中不起作用。好吧,實際上它確實如此,但是當我停止拖動但沒有釋放我的拖動對象時,它向我顯示了藍色默認拖動效果,而我繼續(xù)移動時我看到了我自己的拖動效果。有什么方法可以禁用 OLV 拖動效果嗎?
查看完整描述

1 回答

?
慕桂英546537

TA貢獻1848條經(jīng)驗 獲得超10個贊

您的解決方案在所選項目的上方/下方畫了一條線?


您可以允許在使用之間刪除:


lvPlaylist.IsSimpleDropSink = true;

((SimpleDropSink)lvPlaylist.DropSink).CanDropBetween = true;

如果這還不夠好,您可以回復ModelCanDrop例如


//((SimpleDropSink)lvPlaylist.DropSink).ModelCanDrop+= ModelCanDrop;


 private void ModelCanDrop(object sender, ModelDropEventArgs e)

 {

     e.DropSink.Billboard.BackColor = Color.GreenYellow;

     e.DropSink.FeedbackColor = Color.GreenYellow;

     e.InfoMessage = "Hey there";

     e.Handled = true;

     e.Effect = DragDropEffects.Move;

 }

如果你真的那么討厭它,你甚至可以:


e.DropSink.EnableFeedback = false;

ObjectListView 站點有一個關于拖放的非常深入的教程:


http://objectlistview.sourceforge.net/cs/blog4.html#blog-rearrangingtreelistview


如果你想要真正花哨的東西,你可以為 SimpleDropSink 編寫你自己的子類:


lvPlaylist.IsSimpleDragSource = true;

lvPlaylist.DropSink = new MyDropSink();


private class MyDropSink : SimpleDropSink

{

    public override void DrawFeedback(Graphics g, Rectangle bounds)

    {

        if(DropTargetLocation != DropTargetLocation.None)

            g.DrawString("Heyyy stuffs happening",new Font(FontFamily.GenericMonospace, 10),new SolidBrush(Color.Magenta),bounds.X,bounds.Y );

    }

}

對于您想要的行為,您應該嘗試以下操作:


private class MyDropSink : SimpleDropSink

{

    private ObjectListView _olv;


    public MyDropSink(ObjectListView olv)

    {

        _olv = olv;

    }


    public override void DrawFeedback(Graphics g, Rectangle bounds)

    {

        if(DropTargetLocation != DropTargetLocation.None)

        {

            Point mLoc = _olv.PointToClient(Cursor.Position);

            var hitt = _olv.HitTest(mLoc);

            if (hitt.Item == null) return;


            int idx = hitt.Item.Index;

            Rectangle rect = _olv.GetItemRect(idx);

            Pen MyPen = new Pen(Color.OrangeRed, 3);

            g.DrawLine(MyPen, rect.Left, rect.Top, rect.Right, rect.Top);

        }

    }

}


查看完整回答
反對 回復 2022-12-04
  • 1 回答
  • 0 關注
  • 140 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號