2024年10月控件数组的事件一定有参数(过程声明与同名事件或过程的描述不匹配,如何解决)

 更新时间:2024-10-12

  ⑴控件数组的事件一定有参数(过程声明与同名事件或过程的描述不匹配,如何解决

  ⑵过程声明与同名事件或过程的描述不匹配,如何解决

  ⑶过程声明与同名事件或过程的描述不匹配,最可能的原因是添加了控件数组,但过程声明没有参数,比如:添加了一个mand控件数组,但其click事件为:privatesubmand_click(),正确描述应为:privatesubmand_click(Indexasinteger)。同样的,privatesubtext_change(),描述修改为privatesubtext_change(indexasinteger)...。反之,需要将privatesubmand_click(Indexasinteger)修改为privatesubmand_click()。

  ⑷过程声明与同名事件或过程的描述不匹配,PrivateSubAdodc_Moveplete(ByValadReasonAsADODB.EventReasonEnum,ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,ByValpRecordsetAsADODB.Recordset)

  ⑸Adodc.Caption=“当前记录:“&Adodc.Recordset.AbsolutePosition&“/“&Adodc.Recordset.RecordCount

  ⑹显示为“过程声明与同名事件或过程的描述不匹配”

  ⑺Private?Sub?Adodc_Moveplete(ByVal?adReason?As?ADODB.EventReasonEnum,?ByVal?pError?As?ADODB.Error,?ByVal?adStatus?As?ADODB.EventReasonEnum,?ByVal?pRecordset?As?ADODB.Recordset)

  ⑻会出现过程声明与同名事件或过程的描述不匹配

  ⑼这种情况下,工程->引用->microsoftactiveXdataobject....勾掉,向下找microsoftactiveXdataobject.library勾上就可以了

  ⑽这种情况一般发生在控件数组却用了非控件数组的事件过程描述,比如mand是控件数组,那么它的Click事件就是这样的:PrivateSubmand_Click(IndexAsInteger)。如果仍然用非控件数组的Click事件:PrivateSubmand_Click(),就会发生“过程声明与同名事件或过程的描述不匹配”这样的错误了。

  ⑾在设计时,有三种办法创建控件数组:更改控件的Index属性、将已有的控件复制到同一窗体中、使多个同类型的控件的名称(Name属性相同。更改Index属性选择一个控件,按F打开“属性”面板,找到“Index”属性,将其更改为一个和之间(包括和的且未被用于其他控件索引值的整数,即可创建一个以原控件名称为名称的控件数组。复制已有控件若已有一控件名为mand,右击该控件,单击快捷菜单中的“复制”,再右击控件所在窗体(或其中的一个类似Frame的容器控件,单击快捷菜单中的“粘贴”,VB会弹出一个对话框,显示“已经有一个控件为’mand’。创建一个控件数组吗?”单击“是”按钮,就可创建一个名称(Name属性为“mand”的控件数组,被复制的控件为mand(),粘贴的控件为mand()。使控件名相同若已有一控件名为mand,将另一同类型控件的Name属性改为“mand”后,VB也会弹出一个对话框,单击“是”即可创建一控件数组。运行时增减对象添加对象在VB中,不能在运行时直接创建一个原先不存在的控件数组,但可以使用Load函数为已存在的控件数组添加同类型的控件。假设已有一个控件数组名为“mand”,数组中只有一个对象“mand()”,在运行时,可以通过下面的代码增加一个对象“mand()”。PrivateSubmand_Click(IndexAsInteger)’控件数组中控件的点击事件Loadmand()’添加mand()mand().Top=’将mand()移至顶端mand().Visible=True’将mand()设置为可见EndSub说明:此处的Load函数的语法如下:LoadObject(IndexAsInteger)Load函数参数参数描述Object必选,对象表达式,要添加控件的控件数组名称。Index必选,数值表达式,~的一个整数,被添加的控件在控件数组中的索引值(Index属性,该值必须未被引用。运行时在一个控件数组中添加了新的控件后,新控件除Index、TabIndex和Visible属性外,其余属性与该控件数组中Index属性最小的控件的相应属性完全相同。而Index属性在Load函数中指定,TabIndex属性取VB规定的默认数值(比其他任何控件都大,Visible为False。所以需要改变新控件的Left或Top,以及Visible属性后才能看到它。这里的代码仅设计用于添加mand(),即使mand中的按钮被点击两次,也不能添加mand(),而是会返回“对象已经加载”的错误。为了不断添加控件,可以使用下面的代码。PrivateSubmand_Click(IndexAsInteger)’控件数组中控件的点击事件Ifmand.UBound=ThenExitSubLoadmand(mand.UBound+)’添加控件mand(mand.UBound).Top=mand.UBound*’移动新控件mand(mand.UBound).Visible=True’将新控件设置为可见EndSub控件数组的UBound属性返回该控件数组中控件的最大下标(索引值,添加索引值为mand.UBound+(不大于的控件数组元素可以保证不发生“对象已经加载”的错误。但是,由于控件数组中每个控件的索引值并不一定是连续的,即可以只添加mand()和mand()而不添加mand(),所以即使控件数组最大索引值为,该控件数组也不一定有个对象。删除对象运行时可以使用Unload函数删除控件数组中运行时创建的控件,但设计时创建的控件不能删除。如:Unloadmand()Unload函数语法与Load函数语法相似。属性概述每个控件数组本身都有个属性,这个属性都是设计时无效、运行时只读的;而一个单独的控件还有和控件数组相关的Index属性。Count属性Object.CountAsLong返回控件数组中的元素个数。Item属性Object.Item(IndexAsInteger)AsObject返回控件数组中指定下标的控件,相当于Object(IndexAsInteger)AsObject。LBound和UBound属性Object.LBoundAsIntegerObject.UBoundAsInteger返回控件数组中下标的最小值(LBound或最大值(UBound。Index属性Object.IndexAsInteger(≤Object.Index≤这个属性应用于控件数组中的一个控件,作用是返回或设计时设置控件在其控件数组中的下标,仅当Object属于某一控件数组时有效。示例已有一个名为“mands”的mand控件数组,其中有一大小为缇×缇的mands()控件。运行时单击mands(),则向控件数组中添加一个新控件并显示在前一个控件下方缇处,Caption属性为其Index属性值;单击其他控件时,则从控件数组中删除该控件。PrivateSubmands_Click(IndexAsInteger)WithmandsIfIndex=ThenIf.UBound=ThenExitSubLoad.Item(.UBound+).Item(.UBound).Caption=.UBound.Item(.UBound).Top=(+)*.UBound+.Item(.UBound).Visible=TrueElseUnload.Item(Index)EndIfEndWithEndSub这里用到了With语句,在With...EndWith语句块中可以省略“mands”标识符而直接引用其属性。

  ⑿c#关于控件数组添加事件的问题

  ⒀usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespacet{publicpartialclassForm:Form{publicForm(){Initializeponent();}privatevoidForm_Load(objectsender,EventArgse){PictureBox;for(inti=;i《;i++){t_pic_video=newPictureBox();t_pic_video.Name=“t_pic_video“+i.ToString();t_pic_video.Image=Image.FromFile(“d:a.jpg“);t_pic_video.Width=;t_pic_video.Height=;t_pic_video.Left=*i;//要预先定义好事件的控制函数t_pic_video.Click+=newEventHandler(Form_Click);this.Controls.Add(t_pic_video);}}//控件数组全都绑定到同一个事件控制函数。//在本函数中可以通过预先设定好的标识,来区分是哪一个控件被触发。//本例中,是用Name来区别voidForm_Click(objectsender,EventArgse){PictureBoxpb=senderasPictureBox;if(pb!=null){MessageBox.Show(pb.Name);}}}}

  ⒁vb控件数组(IndexAsInteger)如何判断返回值

  ⒂按钮数组中的每个按钮的Index属性值就是它们的索引值,或者说是序号,你可以手工改变这个值;在控件数组的事件过程中则是通过index参数来判断该事件是由哪个按钮触发的。

  ⒃vb中控件数组的mousedown事件怎么写、对应的的index怎么办

  ⒄控件数组与单个控件的事件代码,写法一样,不过其中的Index参数,就是用来识别控件数组的下标的。例如你可以在该事件里写如下代码:msgbox“现在事件是通过控件数组中的第“&Index&“个控件触发!“

  ⒅请问vb中的index函数是怎么判断下标的

  ⒆?UBound函数返回一个Long型数据,其值为指定的数组维可用的最大下标。语法UBound(arrayname)UBound函数的语法包含下面部分:部分描述arrayname必需的。数组变量的名称,遵循标准变量命名约定。dimension可选的;Variant(Long)。指定返回哪一维的上界。表示第一维,表示第二维,如此等等。如果省略dimension,就认为是。说明UBound函数与LBound函数一起使用,用来确定一个数组的大小。LBound用来确定数组某一维的上界。对具有下述维数的数组而言,UBound的返回值见下表:DimA(To,To,-To)语句返回值UBound(A,)UBound(A,)UBound(A,)UBound函数示例该示例使用UBound函数,确定数组的指定维的最大可用下标。DimUpperDimMyArray(To,To,To)’声明数组变量。DimAnyArray()Upper=UBound(MyArray,)’返回。Upper=UBound(MyArray,)’返回。Upper=UBound(AnyArray)’返回。

  ⒇组态王中一直提示控件事件函数没有参数是怎么回事

  ⒈需要安装office或者VB,组态王中的日历控件是调用其他软件的,不是自带的,装office的版本高一些,的

  ⒉vb当中的(indexASINTEGER)是什么意思,能举例子更好

  ⒊这个一般出现在控件数组的事件中,比如有个按钮控件数组mand()包含三个按钮分别是mand()、mand()、mand(),那么这个按钮控件数组的点击事件就是:PrivateSubmand_Click(IndexAsInteger)’这个时候,如果你点击的是mand(),那么这里的这个Index的值就是’同理,如果点击的是mand(),那么这里的这个Index的值就是’因此,根据这个Index的值,就知道你究竟点的是哪个按钮了IfIndex=ThenMsgBox“你点了第一个按钮“ElseIfIndex=ThenMsgBox“你点了第二个按钮“ElseMsgBox“你点了第三个按钮“EndIfEndSub

  ⒋vb中有没有命令按钮组,在VB中什么叫做控件数组

  ⒌在VB中有控件数组,在VB.中好像没有了。所谓控件数组,是指同一类控件,名称相同,控件的Index属性为控件数组下标,控件的方法中带有Index参数,用以区别数组中是哪个控件触发的事件。建立控件数组最简洁的方式就是在界面上复制粘贴控件,那时系统就会询问是否建立控件数组。例如:按钮mand的click事件,会出现:mand_Click(IndexAsInteger)按钮控件数组中任何一个按钮单击都会触发该事件,Index的取值来标志数组中具体哪个控件元素触发的该事件。

  ⒍因为过程的声明段(Sub……后面携带了一个参数Index,它代表控件索引。在你的窗体上如果有mand控件数组,单击其中一个就会在运行这段过程的时候将Index的值赋为单击的索引数。您可以试着在窗体上建立一个mand,然后复制粘贴多个,建立控件数组(如有对话框,选是然后双击任一。写下列代码PrivateSubmand_Click(IndexAsInteger)PrintIndexEndSub运行,看效果就好了

您可能感兴趣的文章:

相关文章