2013-05-26 6 views
2

Je travaille avec Visual Basic. Comment est-ce que je crée une fonction pour lire d'une liste de mots tout en tapant et remplace n'importe quel mot avec le mot possible accompli en écrivant. comme une fonction de texte t9. c'est le code avec lequel je travaille.texte de remplacement Fonction

Public Class Keyboard2 
Private Property dval As Integer 

Private Sub GoToNext_Click(sender As Object, e As EventArgs) Handles GoToNext.Click 
    'when this button is pressed the next possible word will be genereated and will replace the previous word by calling the "GetWord" Sub 
    GetWord() 
End Sub 


Private Sub GetWord() 
    dval = dval + 1 ' this value is used to ensure that there can be no error in word replacement and it separates each change. 
    Dim lastWord As String = RichTextBox1.Text.Split(" ").Last ' get the last word entered in the text box 
    If dval = 1 AndAlso RichTextBox1.Text.EndsWith("top") AndAlso lastWord = "top" Then 
     'To change the last word to the next possible word 
     RichTextBox1.Text = String.Concat(RichTextBox1.Text.Remove(RichTextBox1.Text.Length - lastWord.Length), "topmost") 
    End If 
    If dval = 2 AndAlso RichTextBox1.Text.EndsWith("topmost") AndAlso lastWord = "topmost" Then 
     RichTextBox1.Text = String.Concat(RichTextBox1.Text.Remove(RichTextBox1.Text.Length - lastWord.Length), "topping") 
    End If 
    If dval = 3 AndAlso RichTextBox1.Text.EndsWith("topping") AndAlso lastWord = "topping" Then 
     RichTextBox1.Text = String.Concat(RichTextBox1.Text.Remove(RichTextBox1.Text.Length - lastWord.Length), "top") 
     dval = 0 
    End If 
End Sub 

End Class 

cette méthode peut être utile à certaines personnes et j'espère que vous aimerez, mais pour moi il est une très mauvaise méthode à utiliser parce que je dois entrer des milliers de mots manuellement.

que je le faire avec une base de données? et quelqu'un a-t-il des exemples? Merci pour votre temps.

+0

Vous n'avez pas encore la liste des mots? –

+0

J'ai une liste mais seulement 100 mots ont été ajoutés jusqu'ici. Je ne veux pas aller plus loin avec cette méthode. il prend une quantité massive de lignes et l'accès à la fonction pendant l'exécution arrête l'application jusqu'à ce que la fonction "GetWord" soit exécutée. –

+0

@RuchmairDixon: Si vous avez utilisé le support IME, n'est-ce pas que la saisie semi-automatique de la langue de Windows le fera pour vous? – matzone

Répondre

2

La fonctionnalité nécessaire est mis en œuvre pour vous dans .NET. Il suffit de ne suit:

1) définir la TextBox.AutoCompleteSource Propriété à true

2) définissez la propriété TextBox.AutoCompleteMode à Suggest

3) charger la la liste de mots à partir du fichier (vous trouverez assez sur le web) et réglez-le sur TextBox.AutoCompleteCustomSource Propriété similaire à celle-ci:

Dim MySource As New AutoCompleteStringCollection() 
MySource.AddRange(New String() _ 
        { _ 
         "January", _ 
         "February", _ 
         "March", _ 
         "April", _ 
         "May", _ 
         "June", _ 
         "July", _ 
         "August", _ 
         "September", _ 
         "October", _ 
         "November", _ 
         "December" _ 
        }) 

textbox1.AutoCompleteCustomSource = MySource 
+0

Wow! Top marques @Vlad L. C'est génial que cela soit intégré, merci pour le partage! – FraserOfSmeg

+0

semble bon. Avant que j'obtiens dans ceci, cette méthode me permettra également d'employer la saisie semi-automatique pour différentes langues, correct? –

+0

@RuchmairDixon pas sûr de toutes les langues, mais cela a fonctionné pour les lettres cyriliques.Il suffit de l'essayer, c'est simple :) – VladL

1

Je pense que votre meilleur pari pour ce serait un fichier texte qui est chargé en mémoire lorsque l'application démarre. J'imagine que vous voudriez avoir une zone de liste créée lors de l'exécution à l'endroit des textboxs emplacements de carotte actuels (plus quelques x et y donc la zone de texte est clairement visible au-dessus/en dessous de la zone de liste) et vous pourriez avoir toutes les options possibles la liste pour que l'utilisateur clique sur la bonne réponse. Est-ce le genre de chose que vous cherchez?

Voici un lien vers un fichier texte, vous pouvez utiliser le dictionnaire, bien qu'il aurait besoin d'un traitement à ne contenir que des mots:

http://www.gutenberg.org/files/29765/29765-8.txt

+0

je soutenir IME ai essayé cette méthode –

+0

Et quel est le résultat? Trop lent? Cela n'avait pas l'air assez élégant? Je ne peux pas vraiment vous aider si vous ne me donnez pas plus d'informations. – FraserOfSmeg

+0

J'ai essayé cette méthode où j'ai fait une autre boîte de texte riche et ajouté le texte à elle et l'ai fait ReadOnly. puis quand je tape dans le RichTextBox1 qui est également en lecture seule (entrée I Thex en RichTextBox1 par code), il compare ensuite le mot de RichTextBox1 à RichTextBox2. mais parce qu'ils sont tous les deux en lecture seule j'ai quelques problèmes principalement le son "ding" que vous obtenez lorsque vous cliquez sur une zone de texte en lecture seule. aussi je ne suis pas très bon à cette méthode. Je pense que le code que j'ai utilisé pour cette méthode était un peu primitif –