-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();

    }

これで、インデックスが 0 に変更されるたびに、0x0B67 の値が 2919 として保存され、0x555E が 21854 として保存されます。値が異なる 1 のインデックスを持つ同じストーリー。このコードに関係するものを変更したことは覚えていませんが、何らかの理由で、リテラルの 16 進値を受け入れていましたが、受け入れられなくなりました。値を変換している理由はありますか? 設定は、ユーザー レベルでの int としてです。

アップデート:

スケールが取り外されたため、16 進数が間違っていたためではなく、Devices Array でベンダーと製品が見つからなかったのです。

4

3 に答える 3

1

コードが変更されていない場合、16 進値が文字どおりに表示されることはありません。書かれたとおりに表示する場合は、文字列を使用します。

于 2012-12-21T15:58:30.387 に答える
1

これで、インデックスが変更されるたびに、0x0B67 の値が 2919 として保存され、0x555E が 21854 として保存されます。

ただし、それらは同じ値です。このコード:

Settings.Default.ScaleVendor = 0x0B67;

は次とまったく同じです:

Settings.Default.ScaleVendor = 2919;

どちらの場合も、整数値 2919 です。これを 10 進数で表現しても 16 進数で表現しても違いはありません。

今、あなたは値で何をしているかを変更したかもしれません...しかし、たまたま整数リテラルに16進数を使用しているという事実は決して関係ありません.

于 2012-12-21T16:00:07.517 に答える
0

16 進表記を使用して記述された値を使用しているだけです。したがって、0x0B67 と 2919 は同じ数値です。数値を 16 進数形式で取得する場合は、次のようにします。

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