-2

好的,所以这段代码运行良好,没有问题,然后突然停止工作。

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (comboBox2.SelectedIndex == 0)
        {
            Settings.Default.ScaleVendor = 0x0B67;
            Settings.Default.ScaleProductID = 0x555E;

        }
        if (comboBox2.SelectedIndex == 1)
        {
            Settings.Default.ScaleVendor = 0x0EB8;
            Settings.Default.ScaleProductID = 0xF000;
        }
        Settings.Default.Save();

    }

现在,每次将 Index 更改为 0 时,都会将 0x0B67 的值保存为 2919,将 0x555E 的值保存为 21854。同样的故事,索引为 1 具有不同的值。我不记得更改与任何此代码有关的任何内容,但由于某种原因,它接受了文字十六进制值并且不再接受。任何想法为什么它现在正在转换值?该设置是用户级别的 int。

更新:

秤被拔掉,这就是为什么它没有在设备阵列中找到供应商和产品的原因,而不是因为十六进制错误。

4

3 回答 3

1

现在每次更改索引时,都会将 0x0B67 的值保存为 2919,将 0x555E 的值保存为 21854。

这些是相同的值。这段代码:

Settings.Default.ScaleVendor = 0x0B67;

完全等同于:

Settings.Default.ScaleVendor = 2919;

在这两种情况下,它们只是整数值 2919 - 无论您用十进制还是十六进制表示,都没有区别。

现在你可能已经改变了你对值所做的事情......但是你碰巧使用十六进制作为整数文字的事实永远不会相关。

于 2012-12-21T16:00:07.517 回答
1

如果您的代码没有更改,它永远不会按字面显示十六进制值。如果您希望它们按原样显示,请使用字符串。

于 2012-12-21T15:58:30.387 回答
0

您只是使用使用十六进制表示法编写的值。所以 0x0B67 和 2919 是同一个数字。如果要获取十六进制格式的数字,则:

Console.WriteLine("{0:x}", Settings.Default.ScaleVendor)
// or
Console.WriteLine(Settings.Default.ScaleVendor.ToString("x"))
于 2012-12-21T16:02:32.713 回答