Ordner erstellen mit der betätigung der Return-Taste

Adrianos

Grünschnabel
Hallo liebe Leute,

Ich hab ein kleines Problem ich hoffe ihr könnt mir dabei behilflich sein. Und zwar ich möchte in einem Textbox eine Dateiname eingeben wenn ich Return-Taste betätige, soll mit der Entertaste eine Ordner erstellt werden mit der Name von der Textbox.

Ich bin soweit gekommen das aus der Textbox eine Ordner erstellt wird aber er erstellt mit jedem aus dem Textbox eingegeben Buchstabe eine Datei.

Jetzt möchte ich es so haben das man eine Enter Funktion schreibt. Und wenn der Enter betätigt wird das Ordner erzeugt wird. Nicht mit jedem Buchstaben die man eingegeben hat.
C#:
  private void textBox2_TextChanged(object sender, EventArgs e)
        {
            //System.Windows.Forms.KeyEventArgs e;
            

            // Specify a "currently active folder"
            string activeDir = @"D:\temp";
            string myName = textBox2.Text;

            //Create a new subfolder under the current active folder
            string newPath = System.IO.Path.Combine(activeDir, textBox2.Text);
            // Create the subfolder
            System.IO.Directory.CreateDirectory(newPath);

            // Create a new file name. This example generates
            // a random string.
            string newFileName = System.IO.Path.GetRandomFileName();

            // Combine the new file name with the path
            newPath = System.IO.Path.Combine(newPath, newFileName);
         }
Habe die Funktion fürs Enter Taste "geschrieben"
Jetzt sagt er mir eine Fehler:
Code:
Error	1	Operator '==' cannot be applied to operands of type 'char' and 'System.Windows.Forms.Keys'	D:\C-Sharp-Projects\SAP_Name_Creater\PCB_GUI\Form1.cs	151	18	PCB_GUI
Error	2	Only assignment, call, increment, decrement, and new object expressions can be used as a statement	D:\C-Sharp-Projects\SAP_Name_Creater\PCB_GUI\Form1.cs	153	18	PCB_GUI
C#:
 private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
             if (e.KeyChar == Keys.Enter & textBox2.Focused)
            {
                 textBox2.Focus;
            }
           
        }

Wenn ihr andere Lösung habt immer her damit bitte.
 

sheel

I love Asm
Hi und Willkommen bei tutorials.de,

ein "und" für if-Bedingungen besteht aus zwei &&
Und nimm nicht KeyChar, sondern KeyCode

Gruß
 

Adrianos

Grünschnabel
Ok danke das mit dem && habe ich geändert

Das Programm schlägt mir aber nicht vor wenn ich e.KeyCode nehmen möchte.
C#:
     private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyCode == Keys.Enter && textBox2.Focused)
            {
                textBox2.Focus;
            }

        }
 

MCoder

Erfahrenes Mitglied
Hallo Adrianos,

KeyPressEventArgs hat tatsächlich keinen KeyCode-Member. Du kannst aber stattdessen KeyChar nehmen. Du musst nur den zu testenden Tastencode auf char casten. Außerdem solltest du dem System sagen, das du die Taste selbst verabeitest ( e.Handled = true; )
C#:
if( e.KeyChar == (char)Keys.Enter && textBox2.Focused )
{
    // TODO: Deine Aktionen

    e.Handled = true;

}
Gruß
MCoder
 

Adrianos

Grünschnabel
Ok danke Jungs es hat geklappt. Habe die Methode geändert dann auch so wie MCoder das beschrieben hat programmiert.