View = View.List
で使用していたSystem.Windows.Forms.ListView
コントロールがあります。私が追加していたListViewItemsには、テキストとアイコンだけのサブアイテムはありませんでした。これはうまくいった。しかし、実行時にViewをView.Details
に変更できるようにしたかったのです。そこで、ListViewコントロールに列を追加し、ListViewItemsにサブアイテムを追加し、ユーザーがビューを変更できるようにするボタンを追加しました。詳細ビューはうまく見えますが、リストモードでは、ListViewItemのテキストは最初の文字に切り捨てられ、省略記号が付いています。たとえば、ListViewItemのテキストが「stackoverflow」の場合、「s ...」と表示されます。ユーザーはアイテムのサイズを変更できません。 View.Listモードで、ListViewItemsの列とサブアイテムを追加する前と同じように、ListViewItemのテキストが表示されるようにするにはどうすればよいですか?WinForms ListView:列があり、View.List表示モードのときにListViewItemの幅を指定する方法は?
1
A
答えて
3
私はそれを見ます。列の幅を広げて、その効果を確認します。ネイティブのWindowsコントロールは、リストモードであってもヘッダコントロールが作成されるのを見ることで紛らわしくなります。列幅を広げてしまうことを短くすれば、唯一実際の回避策は列を削除してから、View = Listに戻ることです。ヘッダーコントロールにいくつかの副作用があるかもしれないという後者のアプローチをお勧めします。
private void button1_Click(object sender, EventArgs e) {
if (listView1.View == View.List) {
listView1.View = View.Details;
listView1.Columns.Add(new ColumnHeader());
}
else {
listView1.Columns.Clear();
listView1.View = View.List;
}
}
0
0
我々は、2列のリストビューの例を取ると、最小幅次いで内容 上にリサイズ。
// Auto resize of ListView Columns to minimum width
private int[] ColumnsWidth = { 35, 322 };
/// <summary>
/// Resize the columns based on the items entered
/// </summary>
private void ResizeColumns()
{
// Auto Resize Columns based on content
m_urlsListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
// Make sure to resize to minimum width
if (m_urlsListView.Columns[0].Width < ColumnsWidth[0])
{
m_urlsListView.Columns[0].Width = ColumnsWidth[0];
}
if (m_urlsListView.Columns[1].Width < ColumnsWidth[1])
{
m_urlsListView.Columns[1].Width = ColumnsWidth[1];
}
}
あなたは 'Control.DefaultPadding'プロパティを設定しようとしたことがありますか? http://msdn.microsoft.com/en-us/library/system.windows.forms.control.defaultpadding.aspx –