偶今天做了个程序啊,我想说一下,比如我有5个按钮啊,针对做不同的事啊,!这个就不说了我有个菜单啊,就是我鼠标如果在那个按钮那里右建点一下就出来一个菜单让人选择啊里面有个我想实现的功能是,“重命名啊”就是重命令这个按钮的名字啊,这个看起来并不糟糕,可是问题我做了一下,出来了,菜单不是说每个按钮都不同的,每个按钮都是调用同一个菜单的,所以,如果我现在比如选择了第二个按钮吧,那么我选择了“重命名“,那么怎么重命名后只针对我们点季的按钮起作用呢,而不对别的按钮有干扰,有什么的,我想不通,主要问题是菜单条只有一个,5个按钮都共用这个菜单,所以我不知道怎么让菜单来判断到底我是点级了那个按钮,然后重命名才不会互相干扰啊,这个就是不知道怎么判断了,谢谢各位帮忙一下好么?谢谢,不知道听懂了我的意思没,偶笨笨啦!!!

解决方案 »

  1.   


    '参考一下.
    '若干个COMMANDBUTTON,一个TEXT1,一个莱单(你要适当修改一下).
    Option ExplicitDim WithEvents Ev_CommandButton As VB.CommandButtonPrivate Sub Ev_CommandButton_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
           If Button = 2 Then
              Me.PopupMenu MYPOPMNU '弹出莱单
           End If
    End SubPrivate Sub Form_Load()
             Timer1.Interval = 50
             Text1.Visible = False
    End SubPrivate Sub Text1_Change()
            If Not (Ev_CommandButton Is Nothing) Then
               Ev_CommandButton.Caption = Text1.Text
            End If
    End SubPrivate Sub Text1_LostFocus()
            Text1.Visible = False
    End SubPrivate Sub Timer1_Timer()
            If UCase$(TypeName(Me.ActiveControl)) = "COMMANDBUTTON" Then
               Set Ev_CommandButton = Me.ActiveControl
            End If
    End SubPrivate Sub 修改_Click() '莱单中修改
            Text1.Visible = True
    End Sub
      

  2.   

    可以把点击的信息存贮在按钮的Tag中
    每次点击某个按钮,只需判断其它按钮的Tag中的之即可
      

  3.   

    我做不来啊,我不知道怎么搞,那个例子我也不知道怎么搞啊,我不理解这句Dim WithEvents Ev_CommandButton As VB.CommandButton这个不太理解啊,请大家在帮帮我,或者给我一下别的意见和例子,我做不来,又找不到TOP大哥,哎,5555555555,我怎么办嘛!!
      

  4.   

    添加控件数组COMMAND1,菜单A(含子菜单RENAME)Dim focus As IntegerPrivate Sub Command1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    focus = Index
    Command1(Index).SetFocus
    If Button = 2 Then PopupMenu a
    End SubPrivate Sub rename_Click()
    Command1(focus).Caption = InputBox("please enter the new name:", "rename", "新的名字")
    End Sub
      

  5.   

    MSTOP的方法显得结构严密,环环相扣,northwolves(野性的呼唤) 的方法最简单易懂
      

  6.   

    Dim WithEvents Ev_CommandButton As VB.CommandButton
    '********************************************
    定义一个CommandButton的事件源.当设置好事件源的对象以后.可以对事件源操作.
    例如:你可以将COMMAND1赋给Ev_CommandButton ,也可以将COMMAND2赋给Ev_CommandButton , 总之,只要源控件是COMMANDBUTTON,Ev_CommandButton 都可以处理.
    注:这样定义不同于数组处理,比控件数组具有更大的灵活性.
      

  7.   

    Dim focus As IntegerPrivate Sub Command1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    focus = Index
    Command1(Index).SetFocus
    If Button = 2 Then PopupMenu a
    End SubPrivate Sub rename_Click()
    Command1(focus).Caption = InputBox("please enter the new name:", "rename", "新的名字")
    End Sub你的方法错了吧,这样怎么能行呢,
    你这样做,好像只对COMMAND1起作用,那么我现在有COMMAND1-COMMAND5这样啊,

    Command1(focus).Caption =
    这个又改怎么改变呢,我觉得你是误解了我的意思,或者你的方法错了吧
      

  8.   

    给我EMAIL.
    我将写个例子发给你.
    [email protected]
    注明:http://expert.csdn.net/Expert/topic/2951/2951512.xml?temp=6.283206E-02
      

  9.   

    MSTOP大哥,我昨天给你发过邮件的啊,好像你根本都没收倒啊!
      

  10.   

    不过现在好像可以了,不过就是出在焦点问题了,必须鼠标先电机一下才又用键有效果啊,烦!比如我有5个按钮,那么默认一个焦点是在其中的第一个按钮上,比如我现在要按别的按钮的右键就不起作用,必须先点这个按钮,然后把焦点移动到这个按钮上,然后点右键才起作用啊,现在就这个问题了,我是针对你MSTOP大哥,你的例子出的这个问题啦,你能看看解决方法么?谢谢!
      

  11.   

    Dim focus As IntegerPrivate Sub Command1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    focus = Index
    Command1(Index).SetFocus
    If Button = 2 Then PopupMenu a
    End SubPrivate Sub rename_Click()
    Command1(focus).Caption = InputBox("please enter the new name:", "rename", "新的名字")
    End Sub没错,控件数组
      

  12.   

    定义一全局变量(例如叫comindex)来储存被点击的按钮编号,然后在每个按钮的mousedown事件中判断是不是右键点击,如果是,则修改comindex的值为此按钮的相应编号,然后弹出菜单。在菜单的“重命名“中,调用一个子过程,而这个子过程的功能就是根据comindex的值来修改相应按钮的caption属性。