none
关于 doubleclick 一个 textbox 会让它的内容改变的问题. RRS feed

  • 問題

  • 各位大大好:

    在我的程序中 textbox 中只能显示 "0" 和 "1"

    当我由键盘输入"0" 和"1"以后,我doubleclick任意一个textbox,都会让textbox中的内容由"1"变为"0",或者由"0"变为"1".

    我的程序在下面,请各位大大运行一下,帮我看看是哪里出了问题,

     

    Public Class Form1
        Dim arrtextbox(8) As TextBox
        Dim i As Integer

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim temptext As TextBox
            Dim itop As Integer
            Dim ileft As Integer
            itop = 10
            ileft = 3
            For i = 1 To 8

                temptext = New TextBox
                temptext.Width = 26
                temptext.Multiline = True
                temptext.Height = 26
                temptext.TextAlign = HorizontalAlignment.Center
                temptext.Font = New Font(temptext.Font.Name, 16, FontStyle.Bold)
                temptext.Visible = True
                temptext.Location = New Point(ileft * 10, 25 + itop * 10)
                Me.Controls.Add(temptext)
                arrtextbox(i) = temptext
                ileft += 2.6

                AddHandler arrtextbox(i).KeyPress, AddressOf tbkeypress
                AddHandler arrtextbox(i).DoubleClick, AddressOf tbdoubleclick

            Next

        End Sub
        Sub tbkeypress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
            sender.selectall()

            If e.KeyChar = "0" Or e.KeyChar = "1" Then
            Else
                e.Handled = True

            End If
        End Sub

        Sub tbdoubleclick(ByVal sender As Object, ByVal e As System.EventArgs)
       
            If arrtextbox(i).Text = 1 Then
                arrtextbox(i).Text = 0
            Else
                arrtextbox(i).Text = 1

            End If

        End Sub

    End Class

    2007年7月18日 上午 06:28

解答

  • Hi,

    在下面這一段程式碼

    Code Snippet

    Sub tbdoubleclick(ByVal sender As Object, ByVal e As System.EventArgs)
       
            If arrtextbox(i).Text = 1 Then
                arrtextbox(i).Text = 0
            Else
                arrtextbox(i).Text = 1

            End If

        End Sub

     

    i 的值是從哪邊過來的呢?我想您可以利用另外一種方式,利用CType將sender轉換成TextBox之後操作它的Text屬性就可以了,參考看看。

    2007年7月20日 下午 04:04
    版主

所有回覆

  • 看不懂你問題的重點。

     

    請明確說明你預期的結果,跟你認為目前錯誤的結果。

     

    因為你的文章看起來似乎是你不需要這句,那就請註解掉或刪除:

    AddHandler arrtextbox(i).DoubleClick, AddressOf tbdoubleclick

    2007年7月18日 上午 08:07
    版主
  • 我预期的结果就是:

    我通过键盘输入"0"或者"1"给textbox

    输入完成以后呢,当我doubleclick某个textbox的时候,

    如果我原来输入的是"0"会变成"1",原来输入的是"1"会变成"0"

     

    现在当我运行这个程序的时候出现了错误.请老师帮忙.

    2007年7月18日 上午 08:21
  • 你為何不用 Radio Button 來做呢 ?
    2007年7月18日 上午 08:30
    版主
  • 我是在做一个关于自动控制方面的软件,

    在textbox当中只能输入"0"和"1"

    为了方便使用者,

    当使用者要把"0"修改为"1"或者把"1"修改为"0"的时候

    只要用鼠标doubleclick就能做到了

    谢谢老师帮忙

    2007年7月18日 上午 08:36
  • Hi,

    在下面這一段程式碼

    Code Snippet

    Sub tbdoubleclick(ByVal sender As Object, ByVal e As System.EventArgs)
       
            If arrtextbox(i).Text = 1 Then
                arrtextbox(i).Text = 0
            Else
                arrtextbox(i).Text = 1

            End If

        End Sub

     

    i 的值是從哪邊過來的呢?我想您可以利用另外一種方式,利用CType將sender轉換成TextBox之後操作它的Text屬性就可以了,參考看看。

    2007年7月20日 下午 04:04
    版主