1

C#winformsプロジェクトでObjectListViewを使用していて、列の1つに小さなアイコンを表示したいと思います。

これまでのところ、アイコンは問題なく表示されていますが、列の中央に配置されておらず、列内の画像の配置に関連するドキュメントやコードが見つかりません。

画像を列の内容として表示する手順は次のとおりです

コードは、与えられた例と実質的に同じです:

col_Important.AspectGetter = delegate(object x) { return ((ClassMyItem)x).IsImportant; };
col_Important.AspectToStringConverter = delegate(object x) { return String.Empty; };
col_Important.ImageGetter = delegate(object x)
    {
        return ((ClassMyItem)x).IsImportant? "star" : "none";
    };

誰かがこの問題に対処し、画像を中央に配置する方法を知っていますか?

4

2 に答える 2

5

(イベントを使用して)サブアイテムを手動で描画するプロセスでDrawSubItem、ObjectListViewプロパティOwnerDrawをtrueに設定するだけで、実際に画像が中央に配置されることに気づきました。

明確にするために、画像のみの列がどのように描画されるかを次に示します。

colName.AspectGetter = delegate(object x) { return ((MyClass)x).SomeProperty; };
colName.AspectToStringConverter = delegate(object x) { return String.Empty }; };
colName.ImageGetter =
    delegate(object x) { return ((MyClass)x).SomeProperty ? "icon" : "none"; };

ObjectListViewには、SmallImageList私が作成したImageListを使用するように設定されています。ここで、ImageGetterメソッドは画像名(この例では「アイコン」)を使用します。

デフォルトでは、テキストの配置などの設定に関係なく、画像は列の左端に描画されます。

ObjectListViewをtrueに設定OwnerDrawすると、画像は奇跡的に列の中央に配置され、他のコードはまったく追加されません。これは予想外の動作であり、おそらくさらに調査する価値があります。今のところは機能するので、このヒントは他の人にも役立つかもしれません。

于 2012-02-09T22:32:00.007 に答える
0

リストを所有者に描画させ、画像を描画するときに画像を中央に配置するのはどうですか(列の境界を知っているxを計算します)。今例を探しています。

ここ:ListViewの中央のサブアイテムアイコン

それが役に立てば幸い。

于 2012-02-02T15:20:44.073 に答える