电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> 数据库
关于DataGridView中如何接收处于编辑状态下的当前信息-ASP教程,数据库相关
作者:网友供稿 点击:110
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 

前几天在尝试使用2005新出的datagridview 控件,结果在接收当前编辑状态下的文本信息的时候出现了麻烦。比方我现在处在第一行第一列,然后我输入一个1,那这个1是什么时候才会邦定到空间的value属性里面呢,你可以通过两个途径,一个是cellendedit一个是valuechanged事件中取到,但是,还有一个麻烦,这两个事件都是在焦点移到别的cell里面去的时候才会触发或者前者在endedit函数执行后触发,但是什么地方去写这个函数,能不能达到预期效果呢?我做了个尝试,我曾经尝试在processcmdkey里面写这个函数触发cellendedit事件,但是百试不得其果,如果哪位朋友看到这里并且已经实现了的话,那么希望能够给我下个例子演示下,所以无奈下,我只能考虑用自定义的datagridviewcolumn来实现。

接下来我的思路很明确,就是采用datagridviewcolumn来实现,首先,最简单的就是,我们继承一个datagridviewtextboxcell,和一个datagridviewcolumn控件,我们知道我们可以在文本的keyup事件里面取得当前文本框里面的值,在keypress事件里面取不倒,比方你原先有个1然后你输入一个字符a那么,keypress事件里面只有一个1只有在keyup事件里面才可以取得1a,当然textchanged等其他事件里面也可以取到,我这里采用keyup事件,那么我们就也为datagridviewcolumn开放这个事件,所以我们再datagridviewcolumn中自定义一个事件,比方datagridviewcolumnkeyup,然后在这个里面写个函数,函数做的工作就是判断外面有没有实现这个事件,如果实现的话旧触发该事件。然而我们这个事件是需要在文本矿的keyup事件中触发,所以我们还得重新写datagridviewtextboxcell中的initializeeditingcontrol,函数,在这个函数里面实现keyup事件的触发,但我们还需要让外面的用户能访问到现在的值比方上面的1a,所以我们还需要为自定义的datagridviewcolumn定义这么个属性,然后在自定义的datagridviewtextboxcell中对其赋值,具体代码如下:

//mydatagridviewcolumn.cs
 public class mydatagridviewcolumn : datagridviewcolumn
    {
        public mydatagridviewcolumn()
            : base()
        {
            this.celltemplate = new mydatagridviewcell();
        }

        public override datagridviewcell celltemplate
        {
            get
            {
                return base.celltemplate;
            }
            set
            {
                if (value != null && !value.gettype().isassignablefrom(typeof(mydatagridviewcell)))
                {
                    throw new exception("这个列里面必须邦定mydatagridviewcell");
                }
                base.celltemplate = value;
               
            }
        }

        private string m_datagridviewcolumntextvalue = "";
       
        public string datagridviewcolumntextvalue
        {
            get
            {
                return m_datagridviewcolumntextvalue;
            }
            set
            {
                m_datagridviewcolumntextvalue = value;
            }
        }

        public void mydatagridviewcolumn_datagridviewcolumnkeyup(object sender, keyeventargs e)
        {
            if (datagridviewcolumnkeyup != null)
            {
                datagridviewcolumnkeyup(this, e);
            }
        }

        public event keyeventhandler datagridviewcolumnkeyup;
}

 

//mydatagridviewcell.cs
  public class mydatagridviewcell : datagridviewtextboxcell
    {
        public mydatagridviewcell()
            : base()
        { }

        private  datagridviewtextboxeditingcontrol dgvtbec;
        private datagridviewcolumn dgvc;
        private mydatagridviewcolumn mdgvc;

        public override void initializeeditingcontrol(int rowindex, object initialformattedvalue, datagridviewcellstyle datagridviewcellstyle)
        {

            base.initializeeditingcontrol(rowindex, initialformattedvalue, datagridviewcellstyle);
            dgvtbec = datagridview.editingcontrol as datagridviewtextboxeditingcontrol;
            dgvc = this.owningcolumn;
            if (dgvc is mydatagridviewcolumn)
            {
                mdgvc = dgvc as mydatagridviewcolumn;
                dgvtbec.keyup += new keyeventhandler(dgvtbec_keyup);
            }
        }

        void dgvtbec_keyup(object sender, keyeventargs e)
        {
            mdgvc.datagridviewcolumntextvalue = dgvtbec.text;
            mdgvc.mydatagridviewcolumn_datagridviewcolumnkeyup(sender, e);
        }
    }

这样你外面就可以使用这个mydatagridviewcolumn,然后为其定义实现这个datagridviewcolumnkeyup事件,得到这个值了。具体你大家可以做下尝试,同时我希望大家能提供一种更加好的办法,因为我这样做的话,有可能所有已经有的datagridcolumn都得重新做过了,我觉得他们微软的开发人员肯定有什么更加好的办法的,只是我不知道,希望大家能给我指条明路,谢谢!!


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·数据库开发个人总结(ADO.NET小结)-.NET教程,数据库应用
·怎么由DataSet将数据导入Excel?-.NET教程,数据库应用
·动态创建SQL Server数据库、表、存储过程-ASP教程,数据库相关
·Win32环境下动态链接库(DLL)编程原理-.NET教程,数据库应用
·封装的ADO.NET对数据库操作经典类-.NET教程,数据库应用
·在DataGridView中获得DataGridViewCheckBoxColumn的状态-ASP教程,数据库相关
·DataGrid使用心得(附大量代码)-ASP教程,数据库相关
·用代码创建DataGrid的多链接及checkbox事件响应-.NET教程,数据库应用
·ADO.NET 的最佳实践技巧-.NET教程,数据库应用
·转载: 用纯ASP代码实现图片上传并存入数据库中

最新文章
·根据数据表中数据,生成Powerpoint幻灯片-ASP教程,数据库相关
·DataGrid中的按钮反选事件与NamingContainer(命名容器)-downmoon-ASP教程,数据库相关
·使用用VB处理MYSQL数据库中二进制数据问题-.NET教程,VB.Net语言
·关于DataGridView中如何接收处于编辑状态下的当前信息-ASP教程,数据库相关
·在DataGridView中获得DataGridViewCheckBoxColumn的状态-ASP教程,数据库相关
·.net下访问Access数据库需要注意的问题-.NET教程,Asp.Net开发
·ActiveMQ4.1+Spring2.0的POJO JMS方案(上)-.NET教程,数据库应用
·ASP.NET 2.0中直接将Access数据库导入到Excel文件中-.NET教程,Asp.Net开发
·NET(C#)连接各类数据库-集锦-.NET教程,C#语言
·ASP.NET2.0连接SQL Server数据库详解-.NET教程,Asp.Net开发


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号