Keyvalue wiedergeben

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von r0tzi.

    Nicht direkt. Du musst dir halt eine Liste mit KeyValuePair Einträgen machen und anschließend den FirstOrDefault Eintrag nehmen, bei dem das Predicate (also die Filterfunktion) deinem gewünschten Ergebnis enspricht:

    VB.NET-Quellcode

    1. Dim keyValueList As New List(Of KeyValuePair(Of Integer, Char))
    2. For i As Integer = 0 To 256
    3. keyValueList.Add(New KeyValuePair(Of Integer, Char)(i, Chr(i)))
    4. Next
    5. Dim result = keyValueList.FirstOrDefault(Function(x) x.Key = 226).Value


    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Hi
    Asc würde das machen, was Radinator über seine Liste macht. Anstatt der Liste würde man außerdem ein Dictionary benutzen oder direkt auf den Index zugreifen.

    Es gibt außerdem auch Zeichen über 256 (das du hier eigentlich vmtl. ausschließen wolltest).

    Beachte, dass es außerdem auch Surrogaten-Paare gibt, d.h. Buchstaben, die in Strings dargestellt werden, da sie aus zwei Chars bestehen (z.B. asiatische Schriftzeichen, spezifische mathematische Schriftzeichen, usw. Für mehr Info einfach mal den Artikel auf Wikipedia durchsehen). Char ist 16 Bit groß.

    Viele Grüße
    ~blaze~
    Afaik geht das nicht; zumindest ging es nicht, als ich es damals getestet habe, als ich noch VB.Net programmiert habe. Allerdings ist obiges falsch herum.
    Eine Möglichkeit, darauf zu verzichten, wäre Convert.ToInt32 bzw. Convert.ToChar oder sowas. Aber warum darauf verzichten, wenn es in VB so vorgesehen ist und auch die Dokumentation auf der MSDN diese Vorgehensweise vorschlägt.

    Viele Grüße
    ~blaze~

    ~blaze~ schrieb:

    Allerdings ist obiges falsch herum.
    Stimmt, das wäre nicht Asc sondern Chr.
    Allerdings hat mich der Ursprungspost etwas irritiert.

    r0tzi schrieb:

    Wenn ich zB KeyValue 226 habe, dass ich diesen in einer Textbox anzeigen kann als "<" ?
    würde ja nach Chr verlangen und nicht nach Asc.

    Vielleicht möchte der TE nochmals verdeutlichen, um was es ihm genau geht.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Da dürfte ChrW weiterhelfen.
    Ich habe gerade kein VS zum Testen.


    Edit: 226 ist in keiner mir bekannten ASCII-Tabelle das <-Zeichen.
    Wie kommst du darauf?

    Meinst du vielleicht Unicode 226A ?
    Das wäre das ≪ Zeichen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    es ist auch kein Ascii sonder key value, das ist was anderes. teste es mal aus

    Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
    Debug.Print("KeyData: {0} KeyCode: {1} KeyValue: {3}", e.KeyData, e.KeyCode, eKeyValue)
    End Sub

    ich würds ja mit chr machen, aber dann müsste ich wissen wie ich das in chr ändere:

    Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
    hotkey = e.KeyValue
    end sub

    wenn ich in der textbox eine tast drücke, wird die variable neu belegt. e.keychr gibt es leider nicht, nur e.keyvalue, e.keycode und e.keydata. diese kann ich aber nicht benutzen, da diese keine integer sind.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „r0tzi“ ()

    das problem ist, dass ich eine config benutze... wenn in dieser Keys.OemBackslash steht, bringt er mir einen fehler ungültige konvertierung zu integer. Ich hatte es vorher mit den Keys, aber damit konnte ich die config nicht benutzen. gibt es keine möglichkeit key.value in den richtigen key zurück wiederzugeben?
    hab mir nun ein workaround gebastelt :)
    ich habe ein hotkey den ich per optionen belegen möchte. Registerkey ist mit integer, also muss ich mit zahlen arbeiten. in meiner config wird also eine zahl bei hotkey geschrieben. nun wollte ich, dass diese zahl in einer box angeziegt wird aber nicht als zahl sondern als buchstabe oder zeichen whatever.

    mein workaround ist nun, dass ich 2 config einträge habe, einer ist die zahl und einer ist einfach der buchstabe :D