Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[gelöst] In Form1 -> Texbox in Form2 fokusieren
Simon Heinzmann
myCSharp.de - Member

Avatar #avatar-2571.jpg


Dabei seit:
Beiträge: 43
Herkunft: Bayern

Themenstarter:

[gelöst] In Form1 -> Texbox in Form2 fokusieren

beantworten | zitieren | melden

Hi,
ich bin im Moment ein wenig ratlos. Folgendes Szenario:
Ich hab eine Bildschirmtastatur in Form1 und eine Textbox in Form2 die nach jedem Klick fokusiert werden soll.

Das funktioniert wunderbar ist aber das falsche Form


private void userControlTS_UserKeyPressed (object sender, KeyboardEventArgs e)
        {
            
            //Focus auf textBox in Form1 funktioniert wunderbar, aber ich will die Textbox in Form2 fokusieren
            textBox1.Focus();
                     
            //Taste an focusiertes Fenster schicken
            SendKeys.Send(e.KeyboardKeyPressed);
        }

Das Funkioniert nicht!


private void userControlTS_UserKeyPressed (object sender, KeyboardEventArgs e)
        {
            //Kein Focus in Form2
            FormBrowser browser = new FormBrowser();
            browser.textBoxURL.Focus();
                     
            //Taste an focusiertes Fenster schicken
            SendKeys.Send(e.KeyboardKeyPressed);
        }

Kann mir jemand weiterhelfen?
Gruss
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Simon Heinzmann am .
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

[FAQ] Kommunikation von 2 Forms
Simon Heinzmann
myCSharp.de - Member

Avatar #avatar-2571.jpg


Dabei seit:
Beiträge: 43
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Hi,
danke für den FAQ Hinweis, mir geht es aber nicht um eine Variablen übergabe sondern um die FOKUSIERUNG.
Gruss
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

dir geht es darum von einer form auf die andere zuzugreifen und genau das wird in diesem faq-beitrag ausführlichst besprochen.
Simon Heinzmann
myCSharp.de - Member

Avatar #avatar-2571.jpg


Dabei seit:
Beiträge: 43
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Hmmm ich weiss jetzt nicht ob ich mich falsch ausgedrückt habe, ich will nicht zugreifen, ich will nur die Textbox in Form2 fokusieren.
private Nachricht | Beiträge des Benutzers
Bakachan
myCSharp.de - Member



Dabei seit:
Beiträge: 196
Herkunft: Falken, Treffurt

beantworten | zitieren | melden

das zählt als kommunikation zwischen 2 forms
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Bakachan am .
your fragile folded wings
are just tired from the pure blue sky
you dont have to force your smiles for anyone
its okay to smile...for yourself
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

du möchtest die textbox einer anderen form ansprechen damit sie sich den fokus holen kann oder damit du ihr den fokus geben kannst.

form1-(gibFokus)> form2.textbox

(genauer kann ich es einfach nciht mehr beschreiben.)
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.430

beantworten | zitieren | melden

Simon, deine 2. Methode kann so gar nicht funktionieren, da du das Formular zwar erzeugst, es aber nicht anzeigst.
Du mußt also mindestens noch ein "browser.Show()" hinzufügen (da nur sichtbare Formulare den Focus erhalten können).
Der Rückgabewert von Focus() sagt dir übrigens, ob die Methode erfolgreich war,

Dann wiederum macht es aber keinen Sinn, daß du jedesmal ein neues Formular öffnest (oder ist das wirklich so gewollt)?
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

so wie ich das verstehe, exisiteiren bereits beide forms und er möhte der bereits existenten form den fokus zuweisen.

nur funktioniert das definitv nicht, wenn du nahc jedem klicken eine neue form erstellst (beachte das "new") .....
Simon Heinzmann
myCSharp.de - Member

Avatar #avatar-2571.jpg


Dabei seit:
Beiträge: 43
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Hi,
ja beim laden von Form1 wird Form2 geöffnet.


private void FormBrowserSteuerung_Load(object sender, EventArgs e)
        {
            FormBrowser browser = new FormBrowser();
            browser.Show();
        }

Ich kann in "userControlTS_UserKeyPressed" kein Form.Show() reinbauen weil dann bei jedem Tastendruck ein neues Fenster geöffnet wird.

Das Grundproblem ist das der Focus auf der Textbox in Form2 liegen muss wenn ich die Zeichen gesendet werden

SendKeys.Send(e.KeyboardKeyPressed);
Gruss
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

dann must du eine variable haben, die auf form2 zeigt. (am besten gleich beim erstellen zuweisen)
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

Beim
Kommunikation von 2 Forms ist irgendwo auch meine fabelhafte Anregung ( ;o) ) verlinkt, zu überlegen, ob man das 2. Form nicht mit dem ersten zusammenlegen sollte, etwa auf verschiedenen Reitern eines Tabcontrols.

Spart man sich viele Umstände, und in deinem Fall vllt. auch dieses SendKeys, mit dem ich vor längerer Zeit schlechte Erfahrung gemacht habe, unds nicht mehr verwende.
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
Simon Heinzmann
myCSharp.de - Member

Avatar #avatar-2571.jpg


Dabei seit:
Beiträge: 43
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Hi,
@ErfinderDesRades: Den Artikel hab ich gelesen, aber bei meinem Projekt handelt es sich um eine Multimonitoranwendung mit drei Bildschirmen die bedient werden sollen über einen Touchscreen.
Auf dem Touchscreen wird bei Bedarf eine Tastatur eingeblendet, mit dem auf einem der anderen Bildschirme ein Browserfenster geöffnet ist.
Gruss
private Nachricht | Beiträge des Benutzers
schaedld
myCSharp.de - Member

Avatar #avatar-2533.jpg


Dabei seit:
Beiträge: 1.433
Herkunft: Schweiz

beantworten | zitieren | melden

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Form2 frm2 = new Form2();

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            frm2.Show();            
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
Form2.cs


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        

        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            textBox1.Focus();
        }
    }
}

Denn Rest müsstest Du mit Events lösen, denn dann kann die Form1 Events von Form2 abonnieren und entweder daruf reagieren oder auch nicht. Genau gleich kannst Du dass für Form2 machen.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von schaedld am .
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
private Nachricht | Beiträge des Benutzers
Simon Heinzmann
myCSharp.de - Member

Avatar #avatar-2571.jpg


Dabei seit:
Beiträge: 43
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Hi,
schaedld du bist der Beste.

Die Lösung ist ganz einfach 8o 8o


public FormBrowserSteuerung()

        FormBrowser browser = new FormBrowser();
        
        private void userControlTS_UserKeyPressed (object sender, KeyboardEventArgs e)
        {
            browser.textBoxURL.Focus();
            SendKeys.Send(e.KeyboardKeyPressed);
            
        }

        private void FormBrowserSteuerung_Load(object sender, EventArgs e)
        {
            browser.Show();
            browser.textBoxURL.Focus();
        }

Schönes WE ich geh jetzt heim.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Simon Heinzmann am .
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

wenn du das nur gelesen hättest:
Zitat
dann must du eine variable haben, die auf form2 zeigt. (am besten gleich beim erstellen zuweisen)
Simon Heinzmann
myCSharp.de - Member

Avatar #avatar-2571.jpg


Dabei seit:
Beiträge: 43
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Hi, jetzt macht der Tip Sinn, ich bin erst am Beginn meiner C#-Programmierkarriere...
Gruss
private Nachricht | Beiträge des Benutzers