自定义控件
我想重写个textbox 让它 获取焦点时下面弹出gridview 失去焦点时就关闭gridview 。我下面写有哪里有错误 ,怎么不显示呢。using System;--------------------编程问答-------------------- 显示区域不在TextBox的Region内 --------------------编程问答--------------------
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;
}
}
}
}
什么意思。能详细讲解下吗? --------------------编程问答-------------------- 可以考虑新另做一个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#