none
提高执行效率的问题 RRS feed

  • 问题

  • 1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     button1.enable=false
     button2.enable=true
     button3.enable=true
        End Sub
    当按下button1时,button2和button3的enable=true。若我有十个button都要enable=true,一定要一个个写吗?这样代码太长了。有没有比较有效率的方法?
    2.   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            MonthCalendar1.ForeColor = Color.Chocolate  为什么没有任何的变化?
        End Sub 

    2011年8月14日 5:16

答案

  • 1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     button1.enable=false
     button2.enable=true
     button3.enable=true
        End Sub
    当按下button1时,button2和button3的enable=true。若我有十个button都要enable=true,一定要一个个写吗?这样代码太长了。有没有比较有效率的方法?


    有一个办法,假设在WinForm中有若干个Button,那么:

    For i As Integer =1 To N

       CType(Me.Controls("Button" & i),Button).Enabled = True

    Next

    button1.Enabled = False

     


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 ckjason 2011年8月14日 10:09
    2011年8月14日 6:41
    版主
  • 2.   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            MonthCalendar1.ForeColor = Color.Chocolate  为什么没有任何的变化?
        End Sub 


    你好:)

    肯定有变化。请确认你的Click事件是否绑定到Button1,建议调试进行。我已经完全测试过,以下是代码(第一块是系统生成的桌面UI代码,第二块是事件代码)

    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Partial Class Form1
        Inherits System.Windows.Forms.Form
     
        'Form overrides dispose to clean up the component list.
        <System.Diagnostics.DebuggerNonUserCode()> _
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            Try
                If disposing AndAlso components IsNot Nothing Then
                    components.Dispose()
                End If
            Finally
                MyBase.Dispose(disposing)
            End Try
        End Sub
     
        'Required by the Windows Form Designer
        Private components As System.ComponentModel.IContainer
     
        'NOTE: The following procedure is required by the Windows Form Designer
        'It can be modified using the Windows Form Designer.  
        'Do not modify it using the code editor.
        <System.Diagnostics.DebuggerStepThrough()> _
        Private Sub InitializeComponent()
            Me.MonthCalendar1 = New System.Windows.Forms.MonthCalendar()
            Me.Button1 = New System.Windows.Forms.Button()
            Me.SuspendLayout()
            '
            'MonthCalendar1
            '
            Me.MonthCalendar1.Location = New System.Drawing.Point(39, 48)
            Me.MonthCalendar1.Name = "MonthCalendar1"
            Me.MonthCalendar1.TabIndex = 0
            '
            'Button1
            '
            Me.Button1.Location = New System.Drawing.Point(114, 216)
            Me.Button1.Name = "Button1"
            Me.Button1.Size = New System.Drawing.Size(75, 23)
            Me.Button1.TabIndex = 1
            Me.Button1.Text = "Button1"
            Me.Button1.UseVisualStyleBackColor = True
            '
            'Form1
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            Me.ClientSize = New System.Drawing.Size(292, 273)
            Me.Controls.Add(Me.Button1)
            Me.Controls.Add(Me.MonthCalendar1)
            Me.Name = "Form1"
            Me.Text = "Form1"
            Me.ResumeLayout(False)
     
        End Sub
        Friend WithEvents MonthCalendar1 As System.Windows.Forms.MonthCalendar
        Friend WithEvents Button1 As System.Windows.Forms.Button
     
    End Class
    
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
            MonthCalendar1.ForeColor = Color.Chocolate
     
        End Sub
    End Class
    

     


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 ckjason 2011年8月14日 10:09
    2011年8月14日 6:47
    版主
  • 你好

    2.   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            MonthCalendar1.ForeColor = Color.Chocolate  为什么没有任何的变化?
        End Sub 

     

    你是使用windows Vista/ Windows 7的嗎?

    如果是的話 你要在Project Properties上disable/ uncheck "Enable XP style" 這個選項才可以自行改變 MonthCalendar的 color

    Please correct me if my concept is wrong


    Chi
    • 已标记为答案 ckjason 2011年8月14日 10:09
    2011年8月14日 7:01
    版主

全部回复

  • 1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     button1.enable=false
     button2.enable=true
     button3.enable=true
        End Sub
    当按下button1时,button2和button3的enable=true。若我有十个button都要enable=true,一定要一个个写吗?这样代码太长了。有没有比较有效率的方法?


    有一个办法,假设在WinForm中有若干个Button,那么:

    For i As Integer =1 To N

       CType(Me.Controls("Button" & i),Button).Enabled = True

    Next

    button1.Enabled = False

     


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 ckjason 2011年8月14日 10:09
    2011年8月14日 6:41
    版主
  • 你好

    或者你可以嘗試以下的CODE

    private  NoOfButtonInTheForm as Integer = 1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
      BatchUpdateButtonProperty(sender)
    
     End Sub
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
      BatchUpdateButtonProperty(sender)
    
     End Sub
    
     Private Sub BatchUpdateButtonProperty(ByVal sender As Object)
      For i As Integer = 1 To NoOfButtonInTheForm 
       CType(Controls("button" & i), Button).Enabled = True
      Next
    
      Dim b As Button = sender
      MessageBox.Show(b.Name)
      CType(Controls(b.Name), Button).Enabled = False
     End Sub
    


     

    Please correct me if my concept is wrong


    Chi
    2011年8月14日 6:44
    版主
  • 2.   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            MonthCalendar1.ForeColor = Color.Chocolate  为什么没有任何的变化?
        End Sub 


    你好:)

    肯定有变化。请确认你的Click事件是否绑定到Button1,建议调试进行。我已经完全测试过,以下是代码(第一块是系统生成的桌面UI代码,第二块是事件代码)

    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Partial Class Form1
        Inherits System.Windows.Forms.Form
     
        'Form overrides dispose to clean up the component list.
        <System.Diagnostics.DebuggerNonUserCode()> _
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            Try
                If disposing AndAlso components IsNot Nothing Then
                    components.Dispose()
                End If
            Finally
                MyBase.Dispose(disposing)
            End Try
        End Sub
     
        'Required by the Windows Form Designer
        Private components As System.ComponentModel.IContainer
     
        'NOTE: The following procedure is required by the Windows Form Designer
        'It can be modified using the Windows Form Designer.  
        'Do not modify it using the code editor.
        <System.Diagnostics.DebuggerStepThrough()> _
        Private Sub InitializeComponent()
            Me.MonthCalendar1 = New System.Windows.Forms.MonthCalendar()
            Me.Button1 = New System.Windows.Forms.Button()
            Me.SuspendLayout()
            '
            'MonthCalendar1
            '
            Me.MonthCalendar1.Location = New System.Drawing.Point(39, 48)
            Me.MonthCalendar1.Name = "MonthCalendar1"
            Me.MonthCalendar1.TabIndex = 0
            '
            'Button1
            '
            Me.Button1.Location = New System.Drawing.Point(114, 216)
            Me.Button1.Name = "Button1"
            Me.Button1.Size = New System.Drawing.Size(75, 23)
            Me.Button1.TabIndex = 1
            Me.Button1.Text = "Button1"
            Me.Button1.UseVisualStyleBackColor = True
            '
            'Form1
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            Me.ClientSize = New System.Drawing.Size(292, 273)
            Me.Controls.Add(Me.Button1)
            Me.Controls.Add(Me.MonthCalendar1)
            Me.Name = "Form1"
            Me.Text = "Form1"
            Me.ResumeLayout(False)
     
        End Sub
        Friend WithEvents MonthCalendar1 As System.Windows.Forms.MonthCalendar
        Friend WithEvents Button1 As System.Windows.Forms.Button
     
    End Class
    
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
            MonthCalendar1.ForeColor = Color.Chocolate
     
        End Sub
    End Class
    

     


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 ckjason 2011年8月14日 10:09
    2011年8月14日 6:47
    版主
  • 你好

    2.   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            MonthCalendar1.ForeColor = Color.Chocolate  为什么没有任何的变化?
        End Sub 

     

    你是使用windows Vista/ Windows 7的嗎?

    如果是的話 你要在Project Properties上disable/ uncheck "Enable XP style" 這個選項才可以自行改變 MonthCalendar的 color

    Please correct me if my concept is wrong


    Chi
    • 已标记为答案 ckjason 2011年8月14日 10:09
    2011年8月14日 7:01
    版主