标签: virtualmode

如何找出当前屏幕上的DataGridView行?

在我的C#(2010)应用程序中,我在虚拟模式下有一个DataGridView,它拥有数千行.是否有可能找出目前屏幕上的哪些细胞?

c# datagridview virtualmode

12
推荐指数
1
解决办法
2万
查看次数

ListView OwnerDraw的默认实现

我有一个ListView,我希望调整项目的绘图(例如突出显示列表视图中的某些字符串),但我不想从根本上改变项目的显示方式.

我已将OwnerDraw设置为true并且可以了解如何绘制我的突出显示效果,但是每当我尝试按照默认实现绘制列表视图项的其余部分时,事情就会出错并且我会留下一个整体加载图形问题,表明实际上我已经完全出错了.

有什么地方我可以看到DrawItemDrawSubItem事件的"默认"处理程序做什么,以便我可以更好地理解并更容易调整我的代码?

这里有一个片段,显示我目前正在做的事情:

public MyListView()
{
    this.OwnerDraw = true;
    this.DoubleBuffered = true;
    this.DrawColumnHeader += new DrawListViewColumnHeaderEventHandler(MyListView_DrawColumnHeader);
    this.DrawItem += new DrawListViewItemEventHandler(MyListView_DrawItem);
    this.DrawSubItem += new DrawListViewSubItemEventHandler(MyListView_DrawSubItem);
}

private void MyListView_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
    // Not interested in changing the way columns are drawn - this works fine
    e.DrawDefault = true;
}

private void MyListView_DrawItem(object sender, DrawListViewItemEventArgs e)
{
    e.DrawBackground();
    e.DrawFocusRectangle();
}

private void MyListView_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
    string searchTerm = "Term"; …
Run Code Online (Sandbox Code Playgroud)

c# listview virtualmode winforms

9
推荐指数
2
解决办法
2万
查看次数

"虚拟"模式下的WPF文本框

是否可以在"虚拟"模式下使用TextBox.

当用户滚动文档时,我想按需提供文本.

wpf textbox lazy-loading virtualmode

6
推荐指数
1
解决办法
1822
查看次数

Gtk.ListStore中的VirtualMode?

我正在寻找Gtk.ListStore中的一个功能,它像Winforms中的ListView.VirtualMode一样工作.

有类似的东西吗?

.net c# listview gtk# virtualmode

5
推荐指数
1
解决办法
394
查看次数

DataGridView虚拟模式列分隔符双击自动调整大小

我在虚拟模式下使用DataGridView进行winform应用,一切都很好!唯一的问题是当我点击双击一个列分隔符时,控件正试图使列宽适合所有单元格,而不仅仅是显示的或可见的!很明显,它挂起了应用程序.

我尝试了各种配置

AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCellsExceptHeader;
AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;
Run Code Online (Sandbox Code Playgroud)

Everything!,datagrid和每一列中的设置!没有任何作用

任何的想法?

最终结果是:用户可以调整列的大小,但不能通过双击en de column border!..我不在乎它是否完全不适合.

c# datagridview virtualmode autosize winforms

5
推荐指数
1
解决办法
998
查看次数

如何异步填充虚拟模式下的ListView?

我想在列表视图中显示我们数据库中的记录 - 但检索可能需要很长时间.我可以使用RetrieveVirtualItem告诉我何时需要新的ListViewItem,添加一个虚拟项目,然后开始检索; 但是当数据库返回时我该如何处理记录呢?当ListView在VirtualMode中时,我无法更新ListView的Items集合.有没有办法告诉ListView重新加载项目?或者我可以保持对ListViewItem的引用并填充它?如果这些都不起作用,我怎么能异步地在虚拟模式下填充ListView?

c# listview asynchronous virtualmode winforms

4
推荐指数
1
解决办法
1万
查看次数

当所选项目不可见时,VirtualMode中的C#ListView会闪烁

我知道复制听起来很复杂,但请关注我:

你有一个ListView VirtualMode = true.

选择一个项目,向下滚动以使所选项目超出可视区域,然后尝试将另一个项目添加到ListView.

你会看到它瞬间表现异常,看到一些闪烁.如果你升级情况并试图快速添加很多项目(我每秒增加约20次),你会发现小问题变得非常大.它是周围闪烁和无效项目的组合.

我已经调查了这个问题,似乎ListView RetrieveVirtualItem为所选项目生成了很多事件(即使它显然不可见).

看起来当我添加一个新项目(增加VirtualListSize)时,ListView首先尝试关注所选项目,然后返回到之前的位置.

有没有人遇到同样的问题?

c# listview flicker virtualmode

4
推荐指数
1
解决办法
2111
查看次数

当ListView处于虚拟模式时,无法访问所选项集合?

我在虚拟模式下有一个ListView.我想进入SelectedItems物业.
但是当我使用时ListView1.SelectedItems,我收到以下异常:

Cannot access the selected items collection when the ListView is in virtual mode
Run Code Online (Sandbox Code Playgroud)

如何ListView1.SelectedItems在VirtualMode中访问.

c# listview selecteditem virtualmode

4
推荐指数
2
解决办法
8553
查看次数

如何在虚拟模式下显示所有列表视图项目上的图标(C#)

我正在使用listview的虚拟模式来显示大数据.但我不知道如何显示每个项目的图像.谁能帮我 ?

我写

private void ListContact_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
    {
        MyContact contact = ContactData.GetMyContact(e.ItemIndex);
        if (e.Item == null) e.Item = new ListViewItem(contact.ToString());
        if (contact.Photo != null)
        {
            e.Item.ImageList.Images.Add("" + contact.Id, contact.Photo);
            e.Item.ImageKey = "" + contact.Id;
        }
        else
        {
            e.Item.ImageKey = "default";
        }
    }
Run Code Online (Sandbox Code Playgroud)

但它不能正常工作

c# listview image virtualmode

4
推荐指数
1
解决办法
2644
查看次数

为数据绑定的数据网格视图实现虚拟模式

关于实施建议的一般问题。

我有一个绑定到datagridview.

BindingList<Line> allLines = new BindingList<Line>();
dataGridView1.DataSource = allLines;
Run Code Online (Sandbox Code Playgroud)

我想实现virtual mode是因为该集合可能包含数百万个条目(Line对象),所以我认为只“缓存”或一次显示一些需要的条目可能会更快。哪个是我理解的虚拟模式?

我看过:http : //msdn.microsoft.com/en-us/library/2b177d6d.aspx

但我无法让它为datagridviewthat is 工作databound

我无法指定行数:

this.dataGridView1.RowCount = 20;
`RowCount property cannot be set on a data-bound DataGridView control.`
Run Code Online (Sandbox Code Playgroud)

编辑:此链接表明我可能必须完全删除绑定。是这种情况吗?http://msdn.microsoft.com/en-us/library/ms171622.aspx

“如果绑定模式不能满足您的性能需求,您可以通过虚拟模式事件处理程序管理自定义缓存中的所有数据。”

.net c# data-binding datagridview virtualmode

4
推荐指数
1
解决办法
1万
查看次数

ListView [VirtualMode]更改选定的索引

VirtualMode = true
MultiSelect = false
Run Code Online (Sandbox Code Playgroud)

我可以获得选择的索引项,但是如何改变呢?

SelectedIndices 只读.

c# listview virtualmode

2
推荐指数
1
解决办法
2911
查看次数

VirtualMode中的WinForms ListView是否限制为100,000,000行?

我有一些网格场景,我希望在ListView中显示> 500,000,000行.

如果我人为限制我的ListView显示100,000,000:

 _listView.VirtualListSize = _data.Count;
 if (_listView.VirtualListSize > 100000000)
   _listView.VirtualListSize = 100000000;
Run Code Online (Sandbox Code Playgroud)

一切正常(自然在VirtualMode中).当我将我的代码更改为:

 _listView.VirtualListSize = _data.Count;
 if (_listView.VirtualListSize > 100000001)
   _listView.VirtualListSize = 100000001;
Run Code Online (Sandbox Code Playgroud)

ListView显示一个空网格......这是一个Microsoft Bug吗?这是从哪里来的?这是Win32 ListView限制吗?最重要的是,为什么没有记录?

.net listview virtualmode

1
推荐指数
1
解决办法
975
查看次数

检查所选项目是否可见[详细信息视图中的虚拟ListView]

subj 有什么好的/简短的解决方案吗?

我能想到:

  • 获取TopItem索引(在VirtualMode创建项目之前是否可以为空?),如果所需项目的索引较小,则不可见,否则获取底部可见索引(顶部索引+ listView.ClientSize.Height / GetItemRect(TopItem).Height),如果所需项目的索引较多,则为无形的。否则可见。

  • 以某种方式检测滚动并做一些事情。

或者也许有更简单的方法?

c# listview virtualmode winforms

0
推荐指数
1
解决办法
2186
查看次数