| 发表于:2007-01-04 15:59:37 楼主 |
我对datagridview的单元格或列属性中设置charactercasing来实现自动转换大小写功能,并调用其textchange方法。可根本找不到。只好在datagridview的editcontrol中另外添加了keypress和textchange两个事件。并在keypress事件中对输入的字符转换大小写。 我想和对textbox等控件一样在设计时能直接修改charactercasing属性,调用keypress和textchange两个事件,应该怎么做? '以下是程序的代码,窗体中加一个datagridview控件,一个textbox控件 private sub addeditcontrolkeypresshandler(byval grdobject as datagridview) grdobject.readonly = false if grdobject.getcellcount(datagridviewelementstates.none) = 0 then grdobject.rows.add() end if grdobject.currentcell = grdobject.rows(0).cells(0) if grdobject.columns(grdobject.currentcell.columnindex).celltemplate.gettype.name <> "datagridviewtextboxcell " then msgbox(grdobject.columns(grdobject.currentcell.columnindex).celltemplate.gettype.name) exit sub end if ineditmode(grdobject) call addevent(grdobject.editingcontrol) end sub sub addevent(byval obj as control) if obj is nothing then exit sub end if addhandler obj.keypress, new keypresseventhandler(addressof celleditkeypress) addhandler obj.textchanged, addressof celltextchanged end sub '转换为大写 sub celleditkeypress(byval sender as object, byval e as system.windows.forms.keypresseventargs) '将字符转换为大写 e.keychar = ucase(e.keychar) e.handled = false end sub '在编辑状态下输入数据时,textbox1中实时显示输入的内容 sub celltextchanged(byval sender as system.object, byval e as system.eventargs) me.textbox1.text = "您输入的是: " & sender.text end sub '表单加载时为datagridview的第一个单元格添加事件 '这里有个问题,为什么只需要给第一个单元格添加事件后每个单元格就都能执行这个事件?请大家帮忙解疑一下。 private sub form2_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load call addeditcontrolkeypresshandler(me.datagridview1) end sub '点击单元格时直接进入编辑状态 private sub datagridview1_cellenter(byval sender as system.object, byval e as system.windows.forms.datagridviewcelleventargs) call ineditmode(me.datagridview1) end sub ' ' ' <summary> ' ' ' 指定具有焦点并已被选为活动的单元格进入编辑状态 ' ' ' </summary> ' ' ' <remarks> </remarks> sub ineditmode(byval grdobj as datagridview) dim oldmode as datagridvieweditmode = grdobj.editmode grdobj.editmode = datagridvieweditmode.editprogrammatically grdobj.beginedit(true) grdobj.editmode = oldmode end sub |
|
|
|
|