当前位置:编程学习 > C#/ASP.NET >>

自定义控件

我想重写个textbox 让它 获取焦点时下面弹出gridview 失去焦点时就关闭gridview 。我下面写有哪里有错误 ,怎么不显示呢。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.ComponentModel;
namespace TestmyCombo
{
  
    class myCombo:TextBox 
    {
        
        DataGridView dgv;

       [Category("Grid属性")]
        public int Dgvwidth
        {
            get { return dgv.Width; }
            set { dgv.Width = value; }
        }
         
        [Category("Grid属性")]
        public int Dgvheight
        {
            get { return dgv.Height ; }
            set { dgv.Height = value; }
        }
        public myCombo()
        {
            dgv = new DataGridView();
            dgv.Parent = this.Parent;
            dgv.Left = this.Left;
            dgv.Top = this.Top + this.Height;

            
        }
      
        protected override void OnGotFocus(EventArgs e)
        {
            if (dgv != null)
            {
                //dgv.Show();
                dgv.BringToFront();

            }
        }
        protected override void OnLostFocus(EventArgs e)
        {
            if (dgv != null)
            {
                dgv.Visible = false;
            }
        }
    }
}
--------------------编程问答-------------------- 显示区域不在TextBox的Region内 --------------------编程问答--------------------
引用 1 楼 dylike 的回复:
显示区域不在TextBox的Region内


什么意思。能详细讲解下吗? --------------------编程问答-------------------- 可以考虑新另做一个form来显示DGV控件. --------------------编程问答-------------------- 网格视必须依托某窗体才能存在吧? --------------------编程问答--------------------
引用 3 楼 dylike 的回复:
可以考虑新另做一个form来显示DGV控件.

我新建了个form 然后把datagridView 换成form 。这个FORM 也是显示不出来,肯定我这个地方有错误的。 --------------------编程问答-------------------- 把gridview的style.display与textbox的客户端onblur之类的绑定吧,别做的那么复杂。 --------------------编程问答-------------------- winform?怎么说成gridview了呢?!程序中倒是写的datagridview。

使用winform控件编程实在太简单,我基本上不回这类问题,因为没有什么真正的问题。要想解决bug,设置个断点看看visible=true或者false的语句什么时候执行就行了。 --------------------编程问答-------------------- dgv.Parent = this.Parent;

这类代码比较诡异。实际上winform开发了几十年,代码很乱。所以这类代码还是少用。不妨把textbox跟datagridview先包装到一个用户控件,单独测试,然后再正式使用。或者你要求myComb的某个属性接受一个datagridview,你只是控制它是否显示,而不是自己创建它。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,