<< NEW | main | OLD>>
ListViewの一番左の列はどうも左揃えしか設定できない仕様になっているようです。
デザイナでDisplayIndexを0以外にしてからTextAlignをCenterやRightにして再び0に戻すと
一見デザイナ上では設定できたように見えますが実際にはLeftになっています。
当該コードにブレークポイントを置けば、代入値が無視されていることがわかります。

これを回避するにはwin32APIで列の設定を再設定してやれば良いようです。
【参考】リストビューの列の属性を変更する

おおまかに次のような手順になります。
1.LVM_INSERTCOLUMNで列挿入(.NET処理)
2.LVM_GETCOLUMNで列設定を取得
3.LVM_SETCOLUMNで列設定を更新

public partial class Form1 : Form
{
public Form1()
{
this.InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
// 一番左の列の書式を再設定する
// wParamは列インデックス(0開始)
if (0 < this.listView1.Columns.Count)
{
LVCOLUMN column = new LVCOLUMN();
column.mask = LVCF_FMT;
SendMessage(this.listView1.Handle, LVM_GETCOLUMN, 0, ref column);
column.fmt = LVCFMT_RIGHT;
//column.fmt = LVCFMT_CENTER;
SendMessage(this.listView1.Handle, LVM_SETCOLUMN, 0, ref column);
}
}

# region P/Invoke
// unicode message code
private const int LVM_GETCOLUMN = 0x105F;
private const int LVM_SETCOLUMN = 0x1060;
//private const int LVM_INSERTCOLUMN = 0x1061;

private const int LVCF_FMT = 0x0001;
//private const int LVCF_WIDTH = 0x0002;
//private const int LVCF_TEXT = 0x0004;
//private const int LVCF_SUBITEM = 0x0008;

//private const int LVCFMT_LEFT = 0x0000;
private const int LVCFMT_RIGHT = 0x0001;
private const int LVCFMT_CENTER = 0x0002;
//private const int LVCFMT_JUSTIFYMASK = 0x0003;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private struct LVCOLUMN
{
public uint mask;
public int fmt;
public int cx;
public IntPtr pszText;
public int cchTextMax;
public int iSubItem;
// IE3.0以上
public int iImage;
public int iOrder;
// Vista以上
public int cxMin;
public int cxDefault;
public int cxIdeal;
}

[DllImport("User32.dll", CharSet = CharSet.Unicode)]
private static extern IntPtr SendMessage(IntPtr hWnd, UInt32 msg, UInt32 wParam, ref LVCOLUMN lParam);
# endregion
}

今回はFormのLoadイベントで処理しています。
当初ListViewのWndProcをオーバーライドして
LVM_INSERTCOLUMN受信時に動的に再設定しようと考えましたが
冒頭に書いたとおり一番左の列のTextAlignは代入自体が無視されることがわかり、
デザイナ上の設定を取得できないため諦めました。
Windows/.NET comments(0) -


コメント


フォーム

ブログ内検索

自作ツールなど
■棒読みちゃんプラグイン
2ch専用ブラウザ読み上げ(改良版)

■IntelliPark設定ツール
WDIDLE3 for Windows

■マウスユーティリティ
Wheelpool

■ユーザー入力監視ソフト
iDLEM@STER

■さぽている攻略 [公開終了]
さぽつ~る(さぽつーる)
アイテムリスト成型
調合成功率計算
カテゴリー別

openclose

プロフィール

百合亞

Author:百合亞
敬虔な百合信仰者かつ崇拝者
将来の夢は女の子

管理人にメール

お名前:
メール:
件 名:

りんく
美少女万華鏡 -罪と罰の少女-

FLOWERS

2017年5月26日発売のNavel新作『月に寄りそう乙女の作法2.1エスパル』を応援しています!

「天結いキャッスルマイスター」応援中!

『想いを捧げる乙女のメロディー』2017年3月24日発売予定

オトメ*ドメイン

eye★phon(アイ・フォン)『つい・ゆり ~おかあさんにはナイショだよ~』

AXL新作第12弾「恋する乙女と守護の楯~薔薇の聖母~」 2016年1月29日発売予定!

お嬢様と秘密の乙女

カミツレ

【ハピメア】応援バナー

【白雪の騎士】応援バナー

ノブレスオブルージュ

シロガネオトメ

『ヒメゴト・マスカレイド』応援中!

屋上の百合霊さん

天使の羽根を踏まないでっ

「キミとボクとエデンの林檎」公式サイトへ

『るいは智を呼ぶファンディスク』を応援しています!

『処女はお姉さまに恋してる ~2人のエルダー~』絶賛発売中!!

りんく2
藤真拓哉オフィシャルブログ
CrystalDiskInfo - 水晶雫

マリかう

Powered by FC2 Blog    Templete by hacca*days.

PR