myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   C# String zum Key (https://mygully.com/showthread.php?t=2037793)

Linaks 04.05.10 17:32

C# String zum Key
 
Hallo liebe User,
Ich habe seit langer Zeit ein Problem das mich ne Weile beschäftigt.
Es geht um Hotkeys und Strings..

Was ich machen will:

Ich habe jetzt diesen Code:


Code:


        UserActivityHook lisa = new UserActivityHook(false, true);
        Keys[] hotkeys;

        public MainForm()
        {
            InitializeComponent();

            hotkeys = new Keys[80];
            lisa.KeyDown += new KeyEventHandler(lisa_KeyDown);
        }



        private void LadenButton_Click(object sender, EventArgs e)
        {

            XmlDocument configdoc = new XmlDocument();
            configdoc.Load("Config.xml");

            XmlNode hottaste = configdoc.SelectSingleNode("/BindConfig/Hotkey0");
            hotkeys[0] = Keys.None; //Hier soll der Convert von String zum Key stattfinden
        }


        private void SpeichernButton_Click_1(object sender, EventArgs e)
        {

            XmlTextWriter keybinderconfig = new XmlTextWriter("Config.xml", System.Text.Encoding.UTF8);
            keybinderconfig.Formatting = Formatting.Indented;
            keybinderconfig.WriteStartDocument(false);

            keybinderconfig.WriteStartElement("BindConfig");
            keybinderconfig.WriteElementString("HotKey0", hotkeys[0].ToString());
      }

Was ich versucht habe beim Laden war:

hotkeys[0] = hottaste.InnerText; //wobei hier nur der String geladen wird und zu einem error kommt. Ich will jedoch das er den String in den Key konvertiert


Danke im Vorraus...

urga 04.05.10 18:58

vielleicht hilft dir ja das hier weiter:
Code:

Keys k = (Keys) ' ';
MessageBox.Show (k.ToString());
k = (Keys) 'a'; // liefert allerdings NumPad1
MessageBox.Show (k.ToString ());
k = (Keys) 'A';
MessageBox.Show (k.ToString ());

ansonsten google mal nach keysconverter.

Linaks 04.05.10 20:05

Du hast es eaber eher vom Key zum String konvertiert.
Hmm Keysconverter kenn ich schon.. Werde mal morgen googel aber hoffe hier trotzdem noch eine Lösung ^^

urga 04.05.10 20:10

Zitat:

Du hast es eaber eher vom Key zum String konvertiert.
???

nein.
k = (Keys) 'A';
von char nach Keys durch das cast. btw. den typ Key gibt es nicht.

übrigens: wie soll denn dein string aussehen, der z.b. SHIFT-A, CURSOR-UP, STRG-C, ALT-F, o.ä. repräsentiert ?

Linaks 04.05.10 23:05

Es gibt keine STRG+A oder ALT+S etc.
Einfach alle Tasten auf der Tastatur..

Kurz: Keys im String speichern e.KeyCode - beim LadenButton die Keys vom String zum Key konvertieren und laden!

urga 05.05.10 18:50

vielleicht hilft dir ja folgendes:
erstell ein neues forms projekt, und füge 2 textboxen (multiline und vertikalen scrollbalken)
hinzu.
immerhin kann man einen int nach Keys konvertieren. String selbst sieht schlecht aus.
zur not 1/2h fleißarbeit und sowas selbst basteln....
Code:

public Form1 () {
      InitializeComponent ();

      List<int> ints = new List<int> ();
      foreach (Keys k in Enum.GetValues(typeof(Keys))) {
        ints.Add ((int) k);
     
        this.textBox1.Text += k.ToString() + "\r\n";
      }
      foreach (int i in ints) {
        // hier kann man tatsaechlich casten!
        Keys k = (Keys) i;
        this.textBox2.Text += k.ToString () + " == " +
          i.ToString () + "\r\n";
      }
    }


Linaks 05.05.10 22:35

Danke habs selber durch Shortcuts gelöst ;)
trootzdem für jeden post ein thanks :D

nooneonearth 06.05.10 20:42

Ich hätte ja mit Enum.Parse(Type, String, Boolean) gearbeitet, das dir einen String in den gewünschten enum-Wert konvertiert. TryParse kann helfen, einen vorhergehenden Check durchzuführen, mit ToString kannst du die Werte zuvor Speichern.
Summa summarum:
  • XML-Datei speichern, dabei ToString für die enum-Werte verwenden.
  • Mit Parse die String-Werte beim Lesen zurück konvertieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.