Laden...

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

Erstellt von Simon Heinzmann vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.810 Views
Simon Heinzmann Themenstarter:in
43 Beiträge seit 2008
vor 15 Jahren
[gelöst] In Form1 -> Texbox in Form2 fokusieren

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

Gelöschter Account
vor 15 Jahren
Simon Heinzmann Themenstarter:in
43 Beiträge seit 2008
vor 15 Jahren

Hi,
danke für den FAQ Hinweis, mir geht es aber nicht um eine Variablen übergabe sondern um die FOKUSIERUNG.
Gruss

Gelöschter Account
vor 15 Jahren

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

Simon Heinzmann Themenstarter:in
43 Beiträge seit 2008
vor 15 Jahren

Hmmm ich weiss jetzt nicht ob ich mich falsch ausgedrückt habe, ich will nicht zugreifen, ich will nur die Textbox in Form2 fokusieren.

B
196 Beiträge seit 2007
vor 15 Jahren

das zählt als kommunikation zwischen 2 forms

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

Gelöschter Account
vor 15 Jahren

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.)

4.931 Beiträge seit 2008
vor 15 Jahren

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)?

Gelöschter Account
vor 15 Jahren

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 Themenstarter:in
43 Beiträge seit 2008
vor 15 Jahren

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

Gelöschter Account
vor 15 Jahren

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

5.299 Beiträge seit 2008
vor 15 Jahren

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.

Simon Heinzmann Themenstarter:in
43 Beiträge seit 2008
vor 15 Jahren

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

1.433 Beiträge seit 2006
vor 15 Jahren

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.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

Simon Heinzmann Themenstarter:in
43 Beiträge seit 2008
vor 15 Jahren

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.

Gelöschter Account
vor 15 Jahren

wenn du das nur gelesen hättest:

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

Simon Heinzmann Themenstarter:in
43 Beiträge seit 2008
vor 15 Jahren

Hi, jetzt macht der Tip Sinn, ich bin erst am Beginn meiner C#-Programmierkarriere...
Gruss