Tag: listview

强制在ListView中显示滚动条?

背景知识 :我们大多数人都知道SysListView32公共控件和.NET Framework提供的等效包装器ListView类。 它内部的一点深度表明,它为滚动内容提供的滚动条不是控件本身,而是由SysListView32控件管理。 目标 :总是绘制滚动条,即使它没有要显示的ListViewItems ,或者只有很少的滚动条,无论如何都不需要滚动条; 有点像模仿RichTextBox类,其ScrollBars属性设置为ForcedBoth 。 或者有点像这个ListBox : 问题 : 对于ListView滚动条, .NET完全没有糖。 Win32文档未说明何时显示/隐藏和/或启用/禁用滚动条。 我的解决方法 : override派生类中的WndProc并按照步骤2和3处理其WM_HSCROLL和WM_VSCROLL消息。 调用base.WndProc来执行滚动function的实际所需处理。 创建一个类似WmScroll的方法,并after base.WndProc返回after立即对其after处理。 这包括对GetScrollInfo的ap / invoke调用。 确定是否确实需要滚动条。 如果不是,则调用ShowScrollBar和EnableScrollBar ,并使用所需的值绘制明显禁用的滚动条。 解决方法的问题 : 它几乎没有用。 滚动条显示和禁用,但与Windows经典主题下的滚动条类似。 它隐藏了每个ListViewGroup的折叠按钮,使它们无用! 描述性图片: 期待已久的实际问题 : 如何强制滚动条 在 ListView 始终 Visible , 而不管 ListView 的数量如何, 如果不需要它们,则禁用它们,同时避免大小错误计算 (显示 ListViewGroup 的 折叠按钮 ) 和主题恶化? 没有代码的答案,以及C# , VB.NET和C […]

简单的ListView数据绑定

我正在尝试使用WPF和C#在ListView显示数据,我对我看到的不同示例和方法感到困惑。 我正在寻找一个类似于我的程序的完整工作示例,或者一个使它工作的先决条件列表。 如果我设法只显示我的collections中的一行数据,我会很高兴。 目前,列表视图不显示任何内容。 C#: public partial class MainWindow : Window { public ObservableCollection Rows { get; set; } public MainWindow() { InitializeComponent(); Rows = new ObservableCollection(); Rows.Add(new Row { ID = “42”, Category = “cat”, CharLimit = 32, Text = “Bonjour” }); } } public class Row { public string ID { get; set; […]

如何突出listview中的项目?

我正试图从listView1拖放并放在listLocal 上,它们都是ListView 它是客户端和服务器之间的文件传输应用程序,应用程序显示小型本地文件资源管理器listLocal和远程文件资源管理器listView1 。 因此,当我将项目从listView1拖放到listLocal并且指针指向项目[ Folder ]时,它应突出显示item.Selected = true 。 但它不起作用,我试图做listLocal.Focus和listLocal.Select仍然无法正常工作,我怎么能让它工作? 注意:当我使用item.BackColor = Color.RoyalBlue; 它工作,但它没有突出显示图标。 private void listLocal_DragOver(object sender, DragEventArgs e) { if (!e.Data.GetDataPresent(typeof(ListViewItem))) return; Point p = listLocal.PointToClient(MousePosition); ListViewItem targetItem = listLocal.GetItemAt(pX, pY); if (targetItem != null) //if dropping on a target item { targetItem.Selected = true; if (targetItem.SubItems.Count > 1) e.Effect = DragDropEffects.None;//if […]

为什么SubItems.Clear()也删除Name属性?

我在详细模式(.NET 4.0,在Windows 7上运行)中使用WinForms ListView,我有一个需要清除特定项目中的子项的函数。 不幸的是,当我这样做时,它也清楚了这个名字: item.Name = “TESTNAME”; item.SubItems.Clear(); MessageBox.Show(item.Name); //shows nothing 在调试器中我跟踪了它,我查看了MSDN上的文档并且它没有用, 清除:从集合中删除所有子项和父ListViewItem。 除了ListViewItem仍然非常存在,因为稍后在函数中我能够再次添加SubItems! 当然,我不必: while(item.SubItems.Count > 0) { item.RemoveAt(0); } 我呢?

将值传递给IValueConverter

我有一个ListView ,它有一个包含两列和多行的Grid 。 每行在每列中都有一个TextBlock ,每个Text属性绑定到ListView的ItemSource的值。 我需要根据第一个TextBlock的值对第二个TextBlock中的文本进行一些转换。 如何将第一个文本框的值输入转换器? 这是我到目前为止: XAML: ValueStringConverter代码: public class ValueStringConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string name = (string)value; name = name.Replace(“$$”, ” “); name = name.Replace(“*”, “, “); name = name.Replace(“##”, “, “); return value; } public object ConvertBack(object value, Type targetType, […]

如何使用C#在ListView中对齐单个子项的文本?

我无法在这个看似简单的主题的任何地方找到答案: 是否可以在WinForms ListView控件中对齐单个子项的文本? 如果是这样,怎么样? 我希望同一列中的文本以不同方式对齐。

阻止listview丢失所选项目

我目前正在使用winform c#中的listview,每次单击listview上的空白区域时,所选项目都将丢失。

使用ObservableCollection未正确更新ListView

我目前正在使用一个可观察的集合来存储我的ListView数据对象。 将新对象添加到集合中工作正常,listView正确更新。 但是,当我尝试更改集合中对象的某个属性时,listView将无法正确更新。 例如,我有一个可观察的集合DataCollection。 我试试 _DataCollections.ElementAt(count).Status = “Active”; 由于按下按钮,我在长时间操作之前执行此更改。 listView不会反映更改。 所以我添加myListView.Items.Refresh() 这是有效的,但是在button_click方法完成之前,listView不会刷新,这在那时是不行的。 例如: button1_Click(…) { _DataCollections.ElementAt(count).Status = “Active”; myListView.Items.Refresh(); ExecuteLongOperation(); _DataCollections.ElementAt(count).Status = “Finished”; myListView.Items.Refresh(); } 状态永远不会转到“活动”,它将在方法完成后直接进入“完成”。 我也尝试使用这样的调度程序: button1_Click(…) { this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background, (NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status = “Active”; myListView.Items.Refresh(); }); ExecuteLongOperation(); this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background, (NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status = “Finished”; myListView.Items.Refresh(); }); } 但是,这似乎也不正常。 任何提示或想法将不胜感激。

Winforms ListView选择图?

是否有可能覆盖listview详细选择油漆? 看起来半透明的蓝色覆盖在项目上,就像在资源管理器窗口中一样。 我想在选择周围画一个轮廓来表示选择。 有什么办法吗? 赞赏的例子。

使用C#阻止ListView中的双重条目?

我们如何访问添加到ListView的项目? 我要做的是:在列表视图中添加一个项目。 我想检查要添加到列表视图的项目是否已存在于ListView中。 我正在使用C#和Visual Studio 2005。