2013-05-26 5 views
2

저는 visual basic으로 작업하고 있습니다. 입력하는 동안 단어 목록에서 읽는 기능을 만들어서 단어를 가능한 완성 된 단어로 바꾸십시오. t9 텍스트 기능처럼. 이것은 내가 작업하고있는 코드입니다.텍스트 대체 기능

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 

이 방법은 어떤 사람에게 유용 할 수 있습니다 그리고 난 당신이 그것을 좋아 희망하지만 나를 위해 내가 수동으로 단어의 수천을 입력해야하기 때문에 사용하기 아주 나쁜 방법입니다.

데이터베이스로이 작업을 수행 할 수 있습니까? 누구든지 어떤 예를 가지고 있나. 시간 내 주셔서 감사합니다.

+0

아직 단어 목록이 없습니까? –

+0

나는 목록이 있지만 지금까지 100 단어 만 추가되었습니다.이 방법으로 더 이상 가고 싶지 않습니다. 막대한 양의 줄을 차지하고 런타임 중에 함수에 액세스하면 "GetWord"기능이 실행될 때까지 응용 프로그램이 중지됩니다. –

+0

@RuchmairDixon : IME 지원을 사용했다면 Windows의 언어 자동 완성 기능이 도움이되지 않을까요? – matzone

답변

2

: 만 단어를 포함하는 것이 어떤 처리를해야하지만

여기, 당신이 사용할 수있는 사전 텍스트 파일에 대한 링크입니다. 그냥 다음을 수행하십시오

1

가))

2 trueTextBox.AutoCompleteSource 속성을 설정 Suggest

3에 TextBox.AutoCompleteMode 속성을 설정) 파일에서 단어 목록을로드 (당신은 웹에 충분한 찾을 수 있습니다)로 설정하고 TextBox.AutoCompleteCustomSource으로 설정하십시오.

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

와우! @Vlad L. 최고 점수. 공유 기능 덕분에 멋지 네요. – FraserOfSmeg

+0

좋아 보인다. 이걸로 들어가기 전에이 방법을 사용하면 다른 언어의 자동 완성 기능을 사용할 수있게된다. –

+0

@RuchmairDixon은 모든 언어에 대해 확실하지 않지만, 이것은 시릴 문자를 사용했습니다.그냥 시도해 보라, 간단하다 :) – VladL

1

나는 이것이 응용 프로그램이 시작될 때 메모리에로드되는 텍스트 파일 일 것이라고 생각합니다. 나는 당신이 텍스트 상자의 위치에 런타임에 작성된 목록 상자를 원한다고 생각한다. (텍스트 상자가 목록 상자 위와 아래에 명확하게 표시 될 수 있도록 x와 y를 더하여) 그리고 나서 가능한 모든 옵션을 가질 수있다. 사용자가 올바른 답을 클릭 할 수있는 목록 상자. 이것은 당신이 찾고있는 종류입니까? 필요한 기능은 .NET에 당신을 위해 구현

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

+0

해당 방법을 시도했습니다. –

+0

그 결과는 무엇입니까? 너무 느린? 충분히 매끄럽게 보지 못했습니까? 당신이 나에게 더 많은 정보를주지 않으면 나는 더 이상 정말로 도움이되지 못한다. – FraserOfSmeg

+0

나는 다른 서식있는 텍스트 상자를 만들고 거기에 thext를 추가하여 ReadOnly로 만들었던 방법을 시도했다. 그런 다음 RichTextBox1을 ReadOnly로 입력하면 (코드로 RichTextBox1에 thex를 입력 함) RichTextBox1의 단어를 RichTextBox2와 비교합니다. 두 가지 모두 읽기 전용이기 때문에 읽기 전용 텍스트 상자를 클릭 할 때 주로 발생하는 "딩"소리가 있습니다. 나는 그 방법에별로 좋지 않다. 그 방법에 사용 된 코드는 약간 원시적이었습니다. –