小编Mik*_*sen的帖子

C#ListView详细信息,突出显示单个单元格

我在C#中使用ListView来制作网格.我想找到一种能够以编程方式突出显示特定单元格的方法.我只需要突出显示一个单元格.

我已尝试使用所有者绘制的子项目,但使用下面的代码,我得到突出显示的单元格,但没有文字!有关于如何使其工作的任何想法?谢谢你的帮助.

//m_PC.Location is the X,Y coordinates of the highlighted cell.


void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
    if ((e.ItemIndex == m_PC.Location.Y) && (e.Item.SubItems.IndexOf(e.SubItem) == m_PC.Location.X))
        e.SubItem.BackColor = Color.Blue;
    else
        e.SubItem.BackColor = Color.White;
    e.DrawBackground();
    e.DrawText();
}
Run Code Online (Sandbox Code Playgroud)

c# listview highlight ownerdrawn

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

模式匹配和占位符值

我正在编写一个使用重命名规则的应用程序,根据用户提供的信息重命名文件列表.文件可能以不一致的名称开头,或者文件名可能是一致的.用户选择文件列表,并输入有关文件的信息(对于MP3,它们将是艺术家,标题,专辑等).使用重命名规则(例如下面的代码),程序使用用户输入的信息相应地重命名文件.

但是,如果所有或部分文件都是一致的,我想让程序"猜测"文件信息.这就是我遇到的问题.做这个的最好方式是什么?

示例文件名:

Kraftwerk-Kraftwerk-01-RuckZuck.mp3
Kraftwerk-Autobahn-01-Autobahn.mp3
Kraftwerk-Computer World-03-Numbers.mp3
Run Code Online (Sandbox Code Playgroud)

重命名规则:

%Artist%-%Album%-%Track%-%Title%.mp3
Run Code Online (Sandbox Code Playgroud)

该程序应正确推断艺术家,曲目编号,标题和专辑名称.

同样,最好的方法是什么?我在思考正则表达式,但我有点困惑.

c# regex

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

C# Nullable 属性 - 通用数组项

注意: 我使用的是 C# 8 的可空引用类型。默认情况下,引用类型不可为空。

假设我有以下方法:

public void TestMethod<T>(T[] items)
{

}
Run Code Online (Sandbox Code Playgroud)

在不使用任何通用约束的情况下,如何使用 Nullable 属性指定数组本身不会为空,但数组中的单个项目可能为空?

我的目标如下:

  • 没有警告,因为数组本身不为空: var len = items.Length;
  • 警告,因为单个项目可以为空: items[0].ToString()
  • 没有警告,因为空合并运算符: items[0]?.ToString()

这段代码似乎表明数组本身可以为空,但是,如果数组本身不为空,那么每个数组项也不为空:

public void TestMethod<T>([MaybeNull]T[] items)
{

}
Run Code Online (Sandbox Code Playgroud)

我知道使用泛型约束可以解决这个问题——因为我可以使用T?[] items——但是,我必须创建两个版本的类——一个用于值类型,一个用于引用类型。有没有办法在使用通用约束的情况下表明这一点?

c# generics nullable-reference-types

6
推荐指数
0
解决办法
167
查看次数

Windows Mobile(C#) - 在手机和PC之间进行通信

我正在开发一个项目,在该项目中,手机上运行的程序需要与其连接的PC上运行的程序进行通信.理想情况下,我想使用USB,WiFi,无论如何进行通信.

这两个程序应该能够传达诸如电池寿命,短信等内容......但是我可以稍后再努力,我只需要让它们进行交谈.

最好的方法是什么?

c# windows-mobile

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

C#将T转换为long

我有一个泛型类(C#),

class MyClass<T> where T : struct, IComparable<T>
{
    public T filelocation;
}
Run Code Online (Sandbox Code Playgroud)

T可以是UInt32或UInt64(没有别的).

我需要将filelocation转换为long以在文件中搜索...

我尝试了以下内容

long loc = (T)myclass.filelocation;

long loc = (T)(object)myclass.filelocation;
Run Code Online (Sandbox Code Playgroud)

但似乎没有任何作用......

有任何想法吗?

c# generics int types

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

可空引用类型:“Try”方法模式,返回 false 时收到 null 警告

我有以下使用“尝试”模式的方法。

public bool TryGetValue(string subnet, [NotNullWhen(true)] out TValue value)
{
    if (!TryFindNode(subnet, out var node))
        throw new InvalidOperationException();
    if (TValueIsDefault(node.Value) == false)
    {
        value = node.Value;
        return true;
    }
    value = default;
    return false;
}
Run Code Online (Sandbox Code Playgroud)

在线value = default- 我收到编译器警告 CS8601:“可能的空引用分配”。下一行返回false, 并value具有该[NotNullWhen(true)]属性。

我是否遗漏了某些内容,或者编译器由于某种原因没有携带 的状态value

Sharplab.io上的完整示例和Github 要点

c# compiler-warnings c#-8.0 nullable-reference-types

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

创建Windows Mobile模拟器映像

我想知道是否有办法创建自己的Windows Mobile模拟器图像.我有索尼爱立信XPERIA X1手机,在3英寸屏幕上有480x800,大约300 DPI.

我想创建一个具有正确屏幕属性的模拟器图像,并希望一个类似于正确按钮位置和手机内容的外观.

我拥有手机,所以如有必要,我可以通过手机创建图像.

这是可能的,如果是的话,怎么样?

emulation windows-mobile

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