Приложение Visual Basic в отношении указателя TexBox и записи (не мыши) - PullRequest
0 голосов
/ 04 декабря 2010

Вот сделка.У меня есть текстовое поле, которое отправляет различные сообщения в другое окно, каждый раз, когда вы нажимаете клавишу ввода, сообщение из одного окна переходит к следующему, только то, что оно создает новую строку (вот и вся концепция Enter), и я хочу, чтобы вывернуться в ту же строку, в самом начале.вроде как MSN, когда вы нажимаете Enter и вы отправляете сообщение!

Вот мой код:

Private Sub msgSender_keyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles msgContent.KeyDown
        If e.KeyCode = Keys.Enter Then
            Dim outStream As Byte() = _
            System.Text.Encoding.ASCII.GetBytes(msg1.Text)
            serverStream.Write(outStream, 0, outStream.Length)
            serverStream.Flush()
            msgContent.Text = ""       'It makes the line empty 
                                       'after you ve sent out a message
        End If
    End Sub    

The output if you send out 3 messages like "Good Morning" , "How are you", "Ok?"
will be like that
 >> George says : Good Morning
 >> George says : 
How are you
 >> George says : 
Ok?

, а я хочу, чтобы оно было

 >> George says : Good Morning
 >> George says : How are you
 >> George says : Ok?

Есть ли способ?Кто-нибудь знает?Другими словами, я хочу, чтобы пишущий курсор (НЕ мышиный) возвращался к 1-му, как каждый раз, когда вы отправляете сообщение.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2010

msgContent - это текстовое поле, в которое вы собираетесь написать сообщение для отправки другому пользователю. ServerStream - это поток, который идет от клиента к серверу. (сообщение) Этот код на файловом сервере (предыдущий был в папке клиента), отвечает за отправку сообщения.

   Private Sub broadcast(ByVal msg As String, _
    ByVal uName As String, ByVal flag As Boolean)
        Dim Item As DictionaryEntry
        For Each Item In clientsList
            Dim broadcastSocket As TcpClient
            broadcastSocket = CType(Item.Value, TcpClient)
            Dim broadcastStream As NetworkStream = _
                    broadcastSocket.GetStream()
            Dim broadcastBytes As [Byte]()

            If flag = True Then
                broadcastBytes = Encoding.ASCII.GetBytes(uName + " says : " + msg)
            Else
                broadcastBytes = Encoding.ASCII.GetBytes(msg)
            End If

            broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length)
            broadcastStream.Flush()
        Next
End Sub

Теперь я хочу сделать следующее: Я хочу, чтобы он работал как MSN, где вы что-то пишете, нажимаете Enter, и он очищает строку и переходит к самому началу. Мой идет на одну строку ниже, и сообщения не выглядят хорошо. PS: я уверен, что хочу, чтобы строка была пустой, потому что я не знаю другого пути, может быть, вы знаете?

0 голосов
/ 04 декабря 2010

Я прочитал это пару раз, и я до сих пор не совсем уверен, чего вы здесь добиваетесь. Тем не менее, одно замечает меня: Вы уверены, что хотите "сделать строку пустой после отправки сообщения"? В частности, этот код:

        msgContent.Text = ""       'It makes the line empty 
                                   'after you ve sent out a message

Насколько я могу судить, вы пытаетесь предотвратить вставку разрыва строки между >> User says: и их комментарием. Если приведенный выше код вставляет пустую строку, это может быть вашей проблемой.


В противном случае было бы полезно, если бы вы могли включить больше контекста в ваш код. Например, что такое msgContent? Что такое serverStream? Где это заявлено? Глядя на небольшой фрагмент вашего кода в первый раз, я не знаю, что означают все ваши переменные и имена элементов управления. Какая часть вашего кода (пожалуйста, опубликуйте это!) Отвечает за написание >> User says: части строки? В равной степени вероятно, что проблема заключается в этом коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...