0

テキストボックスがあります

<TextBox Height="23" Grid.Column="1" PreviewTextInput="AddressBox_PreviewTextInput" HorizontalAlignment="Right" Margin="0,27,13,0" Name="AddressI2C" Text="{Binding Path=AddressMessage, Mode=TwoWay}" VerticalAlignment="Top" Width="128" />

    private string _AddressMessage = string.Empty;
    public string AddressMessage
    {
        get
        {
            return _AddressMessage;
        }
        set
        {
            _AddressMessage = value;
            NotifyPropertyChanged("AddressMessage");
        }
    }

今、私のビューModelクラスには、このテキストボックスに保存されているテキストを取得してint変数に保存する必要があるメソッドがあります。これがトリックです。この変数内の16 進数値のみを保存する必要があります。

デモンストレーション:

テキストボックスの値: 0x18

したがって、まずテキストボックス内のテキストを取得し、変数 int 内に 16 進数値のみを格納する必要があります。基本的に、整数変数内には 18 のみを格納します。

次のように、C++ アプリケーションでこれを行いました。

int address = m_texteditAddress->getText().getHexValue32();

私は次のことを試しました:

string strValue = AddressMessage;
if(strValue.StartsWith("0x"))
{
    strValue = strValue.Remove(0,2);
    int address = Convert.ToInt32(strValue);         
}

しかし、コードをデバッグするときに「0x23」と入力しても、AddressMessage は常に空です。コントロールはループに入りません。どうすればこれを達成できますか????

4

2 に答える 2

0

これを試して:

int address = int.Parse(MyTextBox.Text, System.Globalization.NumberStyles.HexNumber);
于 2012-10-04T04:54:00.827 に答える
0

値はAddressMessageプロパティにバインドされているため、その値を取得するだけです。また、あなたの例は16進文字列から「0x」を取り除いただけなので、String.SubString().

例:

int address = int.Parse(AddressMessage.Substring(2));

実際に 16 進文字列を実際の整数に変換する必要がある場合は、次のように使用しますSystem.Convert

int address = Convert.ToInt32(AddressMessage, 16);
于 2012-10-04T05:41:54.523 に答える