Domanda

Alla ricerca di una soluzione per il controllo ortografico libera, ho pensato che ero così intelligente nel fare questo, ma credo di no.

Ho creato un'applicazione basata su Windows Form e voglio il modulo per aggiungere un utente determinato periodo di controlli utente (con caselle di testo) su un pannello. L'utente può quindi fare clic su alcuni pulsanti e controlli su questo pannello vengono cancellati e vengono aggiunti di nuovi. L'utente fa qualcosa e il processo si ripete. Ora, ho voluto queste caselle di testo per sostenere il controllo ortografico e cercato dappertutto una soluzione gratuita.

caselle di testo WPF supportano il controllo ortografico in cui quelle in forme vincita regolare non lo fanno. Ho pensato di essere in grado di utilizzare questi textboxes WPF aggiungendoli a un oggetto ElementHost che è, a sua volta, in un pannello. Questo pannello sarebbe un controllo utente.

Quindi, nella mia richiesta, sarei stato in grado di aggiungere le istanze di questi controlli utente nel form e fare uso di incantesimo di NET controllo bontà. Questo in realtà ha funzionato, ma dopo aver usato l'applicazione per un po ', ha rilevato che l'applicazione sarebbe poi congelare su di me a causa di errori di memoria. Ho individuato gli errori di memoria a questi controlli WPF dal momento che questo problema non si verifica con le caselle di testo normale.

Quando la finestra si apre e viene specificato il numero di controlli, questo è più o meno come sono aggiunti i comandi:

Dim xOffset As Integer = 0
For i As Integer = 0 To theNumber
    Dim myUserControl As New SpecialUserControl()
    myPanel.Controls.Add(myUserControl)
    myUserControl.Location = New Point(7, 7)
    myUserControl.Location = New Point(xOffset, 7)
    xOffset = xOffset + 207
Next

Si noti che:

  • myPanel è un pannello in un modulo
  • SpecialUserControl è il controllo utente WPF casella di testo (all'interno di un oggetto ElementHost)

Quando l'utente preme un tasto, il pannello viene cancellata:

myUserControl.Controls.Clear()

L'utente può quindi ripetere il processo.

Ci sono un sacco di risultati su internet quando ho cercato di trovare una soluzione e sto pensando che il problema che sto avendo è dovuto al fatto che il controllo WPF non sta andando via, anche dopo la cancellazione del pannello. Seguendo questa conclusione, ho provato soluzioni diverse per quanto riguarda lo smaltimento questi controlli o impostazione solo il problema di memoria continua a verificarsi. Se qualcuno mi potrebbe dare qualche consiglio o idee qui, mi piacerebbe molto grato.

È stato utile?

Soluzione

Ho deciso che questo potrebbe essere solo dovuta al fatto che questi controlli utente vengono creati più velocemente di quanto possano essere raccolti. Ho cambiato il programma in modo che non crea nessuno di questi controlli utente particolari, se non è necessario. Il programma funziona bene con un numero più gestibile di controlli WPF.

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