您的位置:程序门 -> .net技术 -> vb.net



datagridview单元格编辑状态下输入时自动转为大写的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


datagridview单元格编辑状态下输入时自动转为大写的问题[无满意答案结贴,结贴人:msd88]
发表于: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
发表于:2007-01-04 16:08:131楼 得分:0
帮顶~~
发表于:2007-10-23 10:30:222楼 得分:0
帮顶


快速检索

最新资讯
热门点击