Problemi con l'impostazione Focus / Seleziona per formare dopo che mostravo Form2 usando AXACROPDFLIB

StackOverflow https://stackoverflow.com//questions/25050460

Domanda

Come da titolo, sto avendo problemi a selezionare e impostare la messa a fuoco su un controllo nel modulo1 subito dopo che mostro il modulo2.Qualche idea del perché il codice qui sotto non funziona?

public partial class MainForm : Form
{
     public Form2 frm2;

     ...

     public void ReadThroughContents(int index)
     {
        ...

        if (frm2.IsDisposed || frm2 == null) { frm2 = new Form2(); }
        if (!frm2.Visible) { frm2.Show(); }

        this.listbox1.Focus();
        this.listbox1.Select();

        ...
     }
.

Modifica: solo per chiarire, il fuoco rimane su Form2.Io sono comunque in grado di selezionare e concentrarmi su Form1 manualmente cliccando sul modulo, ma ho bisogno di farlo automaticamente.

Modifica: in Form2 Sto usando la libreria AxAcroPDFLib.Un file PDF viene caricato in Form2 quando viene mostrato.Credo che questo sia ciò che impedisce a Form1 di concentrarsi.Ho provato senza caricare il file PDF e posso automatizzare la messa a fuoco.

applausi.

È stato utile?

Soluzione 2

Trovato una soluzione grazie a @DefaultLocale sopra!

Codice copiato da qui

private void returnFocus(object sender, EventArgs e)
    {
        lstboxItems.Focus();
    }
this.lstboxItems.LostFocus += new System.EventHandler(this.returnFocus);
.

Altri suggerimenti

.
.

Solo per chiarire, il fuoco rimane su Form2.

Questo accade perché Form.Show ruba la messa a fuoco.

Si può provare a riportare a fuoco a Form1 prima di impostare la messa a fuoco su controlli specifici.Puoi usare Form.attivo per fare questo:

//...
this.Activate();
this.listbox1.Focus();
//...
.

Dai un'occhiata a questo quessiton se si desidera mostrare sempre il modulo2 senza rubare attenzione: Mostra AForma senza rubare attenzione?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top