c#获取取外部自绘listview的内容
时间: 2023-10-10 19:13:04 浏览: 43
如果您想要获取ListView控件中所有的内容,包括文本和描述,可以使用以下代码:
```csharp
foreach (ListViewItem item in listView1.Items)
{
string text = item.Text; // 获取项的文本
string[] subitems = new string[item.SubItems.Count];
for (int i = 0; i < item.SubItems.Count; i++)
{
subitems[i] = item.SubItems[i].Text; // 获取项的描述文本
}
// 处理获取到的文本和描述
}
```
在上面的代码中,我们使用了一个foreach循环来遍历ListView控件的每个项。对于每个项,我们先使用item.Text属性获取其文本,然后使用一个for循环遍历其所有子项并将其描述文本存储在一个字符串数组中。
请注意,由于每个项可能具有不同数量的子项,因此我们需要在代码中使用一个循环来遍历每个子项。
相关问题
c#如何取外部自绘listview内容
如果你想在 C# 中获取外部自绘的 ListView 的内容,可以使用以下步骤:
1. 使用 P/Invoke 调用 FindWindowEx 函数查找外部窗口中的 ListView 控件的句柄。
2. 使用 SendMessage 函数发送 LVM_GETITEMCOUNT 消息获取 ListView 中项的数量。
3. 使用 SendMessage 函数发送 LVM_GETITEMTEXT 消息获取每个项的文本内容。
以下是示例代码:
```
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr FindWindowEx(IntPtr hWndParent, IntPtr hWndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, StringBuilder lParam);
const int LVM_GETITEMCOUNT = 0x1000 + 4;
const int LVM_GETITEMTEXT = 0x1000 + 45;
IntPtr hwndListView = FindWindowEx(hwndParent, IntPtr.Zero, "SysListView32", null);
int itemCount = SendMessage(hwndListView, LVM_GETITEMCOUNT, 0, 0);
for (int i = 0; i < itemCount; i++)
{
StringBuilder sb = new StringBuilder(256);
SendMessage(hwndListView, LVM_GETITEMTEXT, i, sb);
string itemText = sb.ToString();
// 处理获取到的项文本内容
}
```
其中,hwndParent 是外部窗口的句柄。注意,这种方法只适用于自绘的 ListView 控件,对于系统默认的 ListView 控件可能会有兼容性问题。
c#取外部自绘listview内容
如果您想获取外部自绘的ListView控件的内容,可以使用以下代码:
```csharp
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
private const int LVM_GETITEMCOUNT = 0x1000 + 4;
private const int LVM_GETITEMTEXT = 0x1000 + 45;
public List<string> GetListViewItems(IntPtr listViewHandle)
{
List<string> items = new List<string>();
int count = (int)SendMessage(listViewHandle, LVM_GETITEMCOUNT, IntPtr.Zero, IntPtr.Zero);
for (int i = 0; i < count; i++)
{
StringBuilder sb = new StringBuilder(256);
IntPtr result = SendMessage(listViewHandle, LVM_GETITEMTEXT, (IntPtr)i, sb);
if (result.ToInt32() > 0)
{
items.Add(sb.ToString());
}
}
return items;
}
```
其中,`listViewHandle`是外部ListView控件的句柄。调用`GetListViewItems`方法后,将返回一个包含ListView中所有项的字符串列表。