TextBoxについて への返答
    投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
        投稿者 匿名  (社会人)
        
        投稿日時 
            2009/10/7 17:52:17
        
    
    
        ②確定された文字の次に別の文字を入力すると、最初に入力した確定済の文字が消えてしまう。
(例:【こんにちは】と入力・確定→新たに【あ】と入力→【こんにちは】が消え、【あ】のみ表示)
これは、+でつながないからではないですか?
    
(例:【こんにちは】と入力・確定→新たに【あ】と入力→【こんにちは】が消え、【あ】のみ表示)
これは、+でつながないからではないですか?
        投稿者 がもー  (学生)
        
        投稿日時 
            2009/10/7 05:29:53
        
    
    
        お世話になっています。
現在、VB.NETを使用して独自のメールソフトを開発しています。
先日TextBoxに入力した未確定状態の文字列についてご指導をいただいた者です。
http://rucio.groupsite.jp/commu/ThreadDetail.aspx?ThreadId=9284
現在も引き続き予測変換機能を制作しています。
ですが、以下の問題を解決することができません。
①TextBoxに入力した文字を確定すると、重複して表示されてしまう。
(例:TextBoxに【こんにちは】と入力→確定→【こんにちはこんにちは】)
②確定された文字の次に別の文字を入力すると、最初に入力した確定済の文字が消えてしまう。
(例:【こんにちは】と入力・確定→新たに【あ】と入力→【こんにちは】が消え、【あ】のみ表示)
先日ご指導いただいた内容を参考にして、以下のように現在記述しています。
長々と申し訳ございません。
ご指導よろしくお願いします。
    
現在、VB.NETを使用して独自のメールソフトを開発しています。
先日TextBoxに入力した未確定状態の文字列についてご指導をいただいた者です。
http://rucio.groupsite.jp/commu/ThreadDetail.aspx?ThreadId=9284
現在も引き続き予測変換機能を制作しています。
ですが、以下の問題を解決することができません。
①TextBoxに入力した文字を確定すると、重複して表示されてしまう。
(例:TextBoxに【こんにちは】と入力→確定→【こんにちはこんにちは】)
②確定された文字の次に別の文字を入力すると、最初に入力した確定済の文字が消えてしまう。
(例:【こんにちは】と入力・確定→新たに【あ】と入力→【こんにちは】が消え、【あ】のみ表示)
先日ご指導いただいた内容を参考にして、以下のように現在記述しています。
Public Class Form1
    Private WithEvents win As Window
    Dim yosoku As List(Of String)
   
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        win = New Window()
        win.AssignHandle(TextBox1.Handle)
    End Sub
    Private Sub win_Typing(ByVal text As String) Handles win.Typing
        TextBox1.Text = text
        If yosoku Is Nothing Then
            ReadFile()
        End If
        Dim yosoku_No As String = TextBox1.Text
        ListBox1.Items.Clear()
        For i As Integer = 0 To yosoku.Count - 1
            If yosoku_No = yosoku(i).Substring(0, Math.Min(yosoku_No.Length, yosoku(i).Length)) Then
                ListBox1.Items.Add(yosoku(i).Substring(yosoku(i).IndexOf(",") + 1))
            End If
        Next
    End Sub
    Sub ReadFile()
        yosoku = New List(Of String)()
        Dim yosokuFileName = Path.Combine(Application.StartupPath, "yosoku.txt")
        Dim fs As FileStream = New FileStream(yosokuFileName, FileMode.Open)
        Dim sr As StreamReader = New StreamReader(fs, Encoding.GetEncoding("shift_jis"))
        Dim Buffer As String
        Buffer = sr.ReadLine()
        Do Until Buffer Is Nothing
            yosoku.Add(Buffer)
            Buffer = sr.ReadLine()
        Loop
        sr.Close()
    End Sub
    Private Class Window
        Inherits NativeWindow 'ウィンドウ クラスの作成と登録を自動的に管理 
        Public Event Typing(ByVal text As String)
        Private Declare Function ImmGetContext Lib "imm32" _
        (ByVal hWnd As IntPtr) As IntPtr '指定ウィンドウのコンテキストハンドルを取得する 
        Private Declare Auto Function ImmGetCompositionString Lib "imm32" _
        (ByVal hIMC As IntPtr, ByVal dwIndex As Integer, ByVal lpBuf As System.Text.StringBuilder, _
        ByVal dwBufLen As Integer) As Integer  '変換文字列を取得する 
        Private Declare Function ImmReleaseContext Lib "imm32.dll" _
        (ByVal hWnd As IntPtr, ByVal hIMC As IntPtr) As Integer 'ImmGetContextで取得したハンドルを解放する 
        Protected Overrides Sub WndProc(ByRef m As Message)
            Const WM_IME_COMPOSITION As Integer = &H10F '変換が実行されたことを受信する(フラグはGCS_xxxxx) 
            Const GCS_COMPSTR As Integer = 8
            If m.Msg = WM_IME_COMPOSITION Then
                If (m.LParam.ToInt32() And GCS_COMPSTR) <> 0 Then
                    Dim imc As IntPtr = ImmGetContext(Handle)
                    Dim length As Integer = ImmGetCompositionString(imc, GCS_COMPSTR, Nothing, 0)
                    Dim buf As New System.Text.StringBuilder(length)
                    Dim l As Integer = ImmGetCompositionString(imc, GCS_COMPSTR, buf, length)
                    ImmReleaseContext(Handle, imc)
                    RaiseEvent Typing(buf.ToString(0, l \ 2))
                End If
            End If
            MyBase.WndProc(m)
        End Sub
    End Class
長々と申し訳ございません。
ご指導よろしくお願いします。
結合演算子を使うということですね。試してみます。
教えていただきありがとうございました!