0

リストビューのカスタムコントロールを書いている間:私はこのメソッドを次のようにオーバーライドしています:

protected override void OnDragDrop(DragEventArgs drgevent)
{
    base.OnDragDrop(drgevent);

    // get the currently hovered row that the items will be dragged to
    Point clientPoint = base.PointToClient(new Point(drgevent.X, drgevent.Y));
    ListViewItem hoverItem = base.GetItemAt(clientPoint.X, clientPoint.Y);

hoverItemがnullになることがあります:(リストビューの右端の領域にアイテムをドロップするとnullになります...アイテムとテキストが含まれているリストのどこかにドロップすると、ドロップすると正常に機能しますどこかでアイテムにテキストがない場合、それはnullになります...。 ここに画像の説明を入力してください

わかりやすくするために写真を添付し​​ています

何が問題ですか?または、これを行うためのより良い方法があると思いますか?

4

1 に答える 1

1

問題はない。これは仕様によるものです。赤い点があるアイテムはありません。ListViewにはさまざまな表示モード(Viewプロパティ)があり、各アイテムを囲むアイコン/テキストの「ブロック」が存在する場合と、アイテムの複数の列が存在する場合があります。

ViewプロパティをView.Detailsに設定し、FullRowSelectをtrueに設定すると、GetItemAtは各行の最後の空白にヒットすると思いますが、確実に試す必要があります。

于 2012-05-25T18:42:30.473 に答える