如何使用自己的值以编程方式更改列表视图中单个单元格的背景颜色?

ColorFlag列中的值来自数据库.
这是我的代码:
foreach(DataRow dr in _dataTbl.Rows)
{
_markOW = dr["Mark"].ToString();
_stock = dr["Stock"].ToString();
_SteelSectio = dr["SteelSection"].ToString();
_colo = (Int32)dr["Color"];
ListViewItem _lvi = new ListViewItem(_markOW);
_lvi.SubItems.AddRange(new string[]{_SteelSectio, _stock, _colo.ToString()});
_myListView.Items.Add(_lvi); }
Run Code Online (Sandbox Code Playgroud)
这是我试图改变单元格背景颜色的代码:
for (int _i = 0; _i < _owLV.Items.Count; _i++)
{
_myListView.Items[_i].UseItemStyleForSubItems = false;
_myListView.Items[_i].SubItems[3].BackColor = Color.FromArgb(_colo);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
我有一个包含3列的ListView,想要编辑第三列,即Subitem [1].如果我将ListView.ReadOnly设置为True,它允许我编辑所选项目的标题.是否有一个简单的方法为子项目做同样的事情?我想远离在顶部添加无边框控件进行编辑.
我正在尝试使用可编辑的项目和子项实现listview控件.而不是常规列表视图外观,项目和子项目应具有编辑控件,复选框或组合框.
我正在使用原始WinAPI和C++.我的目标是Windows XP向前发展.
在这里和互联网上进行研究之后,我只能找到一些例子MFC.他们都使用LVN_BEGINLABELEDIT技术来实现这种行为.
不幸的是我完全不理解这个概念所以我决定从头开始(我认为这也是提高编程技能的最佳方法).
我的概念:
我决定赶上NM_DBLCLKlistview,并从那里使用ListView_GetItemRect或ListView_GetSubItemRect宏获取坐标.
然后我只需将组合框/复选框/编辑控件移动到相应的项目/子项目上(组合框/编辑控件/复选框将被创建为单独的隐藏窗口).
用户完成输入后(按输入或更改焦点)我只需隐藏组合框/复选框/编辑控件.
我目前的成绩:
目前,当项目/子项目上方移动时,我坚持使用组合框/编辑控件/复选框的尺寸与项目/子项目尺寸不同.
可以改进下面提交的代码示例,以便将组合框/编辑控件/复选框窗口大小正确调整为项目/子项目的大小吗?目前,我只关注问题的这一部分,以尽可能缩短这个问题.
以下是创建说明问题的小应用程序的说明.请注意,我尽力保持尽可能少的事情:
1.)Win32 project在Visual Studio(我使用VS 2008)中创建默认值.
2.)将以下WM_CREATE处理程序添加到主窗口的过程:
case WM_CREATE:
{
HWND hEdit = CreateWindowEx( 0,WC_EDIT, L"",
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_CENTER | ES_AUTOHSCROLL,
250, 10, 100, 20, hWnd, (HMENU)1500, hInst, 0 );
HWND hComboBox = CreateWindowEx( 0,WC_COMBOBOX, L"",
WS_CHILD …Run Code Online (Sandbox Code Playgroud) 我正在尝试在TListView中的现有列之间添加一列.因此,我在最后添加新列,并通过将其索引设置为指定值来移动它.这有效,直到添加另一个新列.
我做了什么:在最后位置添加列(Columns.Add)并在最后位置(Subitems.Add)添加子项.然后我通过将列的索引设置为正确的位置来移动列.只要只添加一列,这样就可以正常工作.添加第二个新列时,子项目会被搞砸.第一列的新子项移动到最后一个位置,例如:
0 | 1 | new A | new B | 3
Caption | old sub 1 | old sub 3 | new Sub B | new sub A
Run Code Online (Sandbox Code Playgroud)
如果有人可以提供帮助,我会很高兴!
例如,是否可能有一个命令或消息我可以发送到ListView,所以它刷新或保存它的Column - > Subitem映射,我可以在添加第一个新列及其子项后使用,以便我可以处理第二个新列和第一个一样.
或者这只是TListViews列的一个错误 - >子项处理或TListColumns ......?
vcl表单应用程序的示例代码(指定Form1.OnCreate事件):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
listview: TListView;
initButton: TButton;
addColumn: TButton;
editColumn: TEdit;
subItemCount: Integer;
procedure OnInitClick(Sender: TObject);
procedure OnAddClick(Sender: TObject);
public …Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,用户输入的信息随后会添加到列表视图中.这很好用.唯一的问题是,应用程序连接到一个网站,该网站更新每个帐户的列表视图中的"点"字段.我不确定如何在列表视图中更新单个子项目.
这是一个示例屏幕截图:
alt text http://i37.tinypic.com/15y6arn.jpg
如何选择特定行中的特定子项进行更新?
如何为listview子项添加图像而不是文本?喜欢http://i44.tinypic.com/2mzz6s6.png?
这里通常是我如何添加一个字符串:
ListViewItem item = new ListViewItem("A");
item.SubItems.Add("B");
item.SubItems.Add("C");
listView1.Items.AddRange(new ListViewItem[] { item });
Run Code Online (Sandbox Code Playgroud)
我正在使用带有WinForms的.NET 2.0.另外,请不要将我链接到具有高级.NET listview控件的文章.我想坚持使用MSVC中的标准版.
我有一个包含2列的列表视图,当我双击一个项目时,我需要在TextBox控件中显示其相应子项的值.我怎样才能做到这一点?
我搜索了谷歌,但它没有返回任何有用的东西,可能是因为我不确定要搜索什么.
谢谢
我有一个列表视图,在其中一列(不是第一列)中我想显示错误代码.
我无法做的是显示工具提示.我有
this.lstList.ShowItemToolTips = true;
...
ListViewItem value = lstList.Items.Add(name, name, 0);
...
if (lstList.Columns.Contains(lstColErrorCode))
{
value.SubItems.Add(new ListViewItem.ListViewSubItem(value, errorCode.ToString()));
value.ToolTipText = errorCode.ToString("X");
}
Run Code Online (Sandbox Code Playgroud)
我想获得代码的十六进制值,以显示在十进制值上方的工具提示中,但它显示在名称上方.
我无法得到任何我尝试过的东西(比如试图获得子项的坐标).我将不胜感激任何建议.
我有一个导航抽屉原型.我们有相同的标题和副标题.我正在使用菜单组来包含标题.
1)只想为导航抽屉添加子标题或帮助文本.2)想要自定义图标大小以适合整个标题和子标题,使其看起来如下图所示.
<item
android:id="@+id/nav_home"
android:icon="@drawable/ic_menu_home"
android:subtitle="View your biorhythm" <!-- This should be sub title. -->
android:title="Home"
/>
Run Code Online (Sandbox Code Playgroud)
如何更改列表视图中特定列的颜色?
string[] row = { appID[i], "Launch Game"}; // more data to add
listView1.Items.Add(nameArray[i], i).SubItems.AddRange(row);
listView1.ForeColor = System.Drawing.Color.Blue;
Run Code Online (Sandbox Code Playgroud)