首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于Linux mono拒绝承认我已经调整了VirtualMode ListView的列的大小,有什么解决方法吗?

对于Linux mono拒绝承认我已经调整了VirtualMode ListView的列的大小,有什么解决方法吗?
EN

Stack Overflow用户
提问于 2010-05-07 06:23:28
回答 1查看 150关注 0票数 0

当我调整列的大小时,它不会使用更新的对齐方式重新绘制数据。我尝试过失效、刷新和其他一些东西。没有一样东西起作用。有谁知道解决办法吗?我还没有在Windows的mono中尝试过。

为了理解我的意思,将这个控件放在一个表单上,并在Linux的mono中运行它:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

class MyListView : ListView
{
  private readonly List<ListViewItem> items_ = new List<ListViewItem>();
  public MyListView()
  {
    VirtualMode = true;
    Columns.Add("Col 1");
    Columns.Add("Col 2");
    Columns.Add("Col 3");
    Add(new ListViewItem(new[] { "a", "b", "c" }));
    Add(new ListViewItem(new[] { "a", "b", "c" }));
    Add(new ListViewItem(new[] { "a", "b", "c" }));
    Add(new ListViewItem(new[] { "a", "b", "c" }));
    Add(new ListViewItem(new[] { "a", "b", "c" }));
  }
  protected override void OnRetrieveVirtualItem(RetrieveVirtualItemEventArgs e)
  {
    e.Item = items_[e.ItemIndex];
    base.OnRetrieveVirtualItem(e);
  }
  public void Add(ListViewItem item)
  {
    items_.Add(item);
    VirtualListSize = items_.Count;
  }
  protected override void OnDrawColumnHeader(DrawListViewColumnHeaderEventArgs e)
  {
    e.DrawText();
    base.OnDrawColumnHeader(e);
  }
  protected override void OnDrawSubItem(DrawListViewSubItemEventArgs e)
  {
    var text = ((ListViewItem.ListViewSubItem)e.SubItem).Text;
    using (var brush = new SolidBrush(e.SubItem.ForeColor))
    {
      e.Graphics.DrawString(text, Font, brush, e.Bounds);
    }
    base.OnDrawSubItem(e);
  }
  protected override void OnColumnWidthChanged(ColumnWidthChangedEventArgs e)
  {
    base.OnColumnWidthChanged(e);
    Invalidate(true); // Nope, that didn't work
    Refresh(); // Nope, that didn't work
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-08 03:31:45

我想通了。虽然我的存储和重用ListViewItem实例的方法在Windows中运行良好,但mono更喜欢我在OnRetrieveVirtualItem的主体中重新创建它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2784917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档