梦在脚下,让心灵去飞翔。

专注.net,SQL Server,设计模式。

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  15 随笔 :: 1 文章 :: 983 评论 :: 28 引用
前一段时间,我写个两个控件,ComboBoxTreeView(下拉列表框弹出树) 与ToolStripComboBoxTreeView(下拉列表框工具条弹出树) ,不知道对大家在开发的过程中是否有帮助,今天继续发布VS2005下的ComboBox系列控件中的ComboBoxDataGridView (下拉列表弹出DataGridView),思路与ComboBoxTreeView差不多,唯一不同的是,在数据源设置的地方,大家可以看代码,也希望大家能够踊跃留言,把你们的问题说出来,以便我能开发更好的更实用的控件给大家.在以后的几天当中,我将陆续发布VS2005下的一些控件,请大家关注,好了,下面大家请看附图:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Design;

namespace WindowsApplication21
{
    
public class ComboBoxDataGridView : ComboBox
    
{
        
成员变量
        
构造函数
        
属性
        
方法
    }

}

下面的代码是客户端调用的方法:
在下面的演示程序中
/Files/CodeAnyWhere/ComboBoxDataGridView.rar


 

posted on 2005-12-13 19:14 随风飘散 阅读(4794) 评论(20)  编辑 收藏 网摘

评论

能否实现键盘输入呢?并做到每输入一字符,都能过滤掉姓名(或编号+姓名)不相符的人员。我正想做一个类似的控件,并能用于grid输入。(我用ultragrid)

谢谢
jameswei@mail.sxptt.zj.cn

  回复  引用    

#2楼  2005-12-13 20:55 xcpt [未注册用户]
报告一个BUG:点开组合框后再点组合框的黑三角不能关闭组合框,只能选定一项才能关闭
  回复  引用    

#3楼 [楼主] 2005-12-13 21:56 随风飘散      
To jameswei :可以做到,这只是个简单版本,我会在近期把你说的功能加进来,请你关注!
还有xcpt 点黑三角不是BUG只是我用win32消息拦截的方式来祛除基类不好看的小白条问题!
  回复  引用  查看    

#4楼 [楼主] 2005-12-13 22:13 随风飘散      
在今后的版本中会加进点一下下拉三角,打开,在点关闭.谢谢大家提宝贵意见,我将在后续版本中做出更实用的用户控件.
  回复  引用  查看    

#5楼  2005-12-13 22:45 Frederick      
兄弟,我是期刊团队的Frederick,你是否愿意用你的控件作为实例,写一个面向初学者的教程,发表在博客园期刊上?

frederick.liu@gmail.com

期待你的答复
  回复  引用  查看    

#6楼  2005-12-14 09:34 zz堪 [未注册用户]
我还同有VS2005呢,现在D版市场上又没有,唉,搞D版的一点也不敬业,什么EXPRESS版RTM版的BUG又多,唉。。。
  回复  引用    

#7楼  2005-12-29 16:40 czh [未注册用户]
void ComboBoxDataGridView::WndProc( Message% m )
{
if (m.Msg == WM_LBUTTONDBLCLK || m.Msg == WM_LBUTTONDOWN)
{
if (isShowDropDown)
CloseDropDown();
else
ShowDropDown();
return;
}
ComboBox::WndProc( m );
}
  回复  引用    

#8楼  2006-06-20 11:38 myok [未注册用户]
版大。请问 VS2003能做到以上的效果吗?
  回复  引用    

vb下面的代码怎么写呢?标题不时vs2005吗?其他的语言也给个思路吧?
  回复  引用    

#10楼  2006-12-26 19:07 庄向军 [未注册用户]
我现在再做datagridview编程遇到一个问题就是:在选择一个单元格并且编辑后按回车键怎样让同一行中的下一个单元格得到焦点。而不是到下一行的单元格中。feiyueone@sina.com
QQ295848916
  回复  引用    

#11楼  2007-03-20 17:41 zjx [未注册用户]
楼主能否提供VB。NET的源代码?
  回复  引用    

新瓶装久酒,
真好喝

  回复  引用    

我弄了一个,比这个要精至些...

VS.NET 2003 可以自己开一个的.原理都差不多:)
  回复  引用    

新增一个
private DataTable GetDataTable2()
{
DataTable dt = new DataTable();
dt.Columns.Add("编号");
dt.Columns.Add("姓名");
dt.Columns.Add("部门");

DataRow one = dt.NewRow();
one["编号"] = "1001";
one["姓名"] = "王小二";
one["部门"] = "销售部";
dt.Rows.Add(one);

DataRow two = dt.NewRow();
two["编号"] = "1002";
two["姓名"] = "老陈";
two["部门"] = "财务部";
dt.Rows.Add(two);

DataRow three = dt.NewRow();
three["编号"] = "1003";
three["姓名"] = "老张";
three["部门"] = "人事部";
dt.Rows.Add(three);

return dt;

}

放一个Button
private void button1_Click(object sender, EventArgs e)
{
this.编号.DataGridView.DataSource = GetDataTable2();

}
单击Button后,显示数据没有变化

反复试验结果:
ToolStripDropDown在执行show操作后,再改变DataGridView.DataSource显示没有任何刷新,
但如在执行show操作前改变数据源将显示最后一次数据

解决方案:在每次调用ToolStripDropDown.show操作前重复写下面代码
Form frmDataSource = new Form();
frmDataSource.Controls.Add(dataGridView);
frmDataSource.SuspendLayout();

dataGridViewHost = new ToolStripControlHost(dataGridView);
dataGridViewHost.AutoSize = m_blPopupAutoSize;

dropDown = new ToolStripDropDown();
dropDown.Width = this.Width;
dropDown.Items.Add(dataGridViewHost);
这意味着重新建立Form 、ToolStripControlHost、ToolStripDropDown实例,效能低下
问题:
第2次显示明显比第1次慢很多,2万条记录测试,第1次15秒,第2次90秒
慢主要体现在
frmDataSource.Controls.Add(dataGridView);
dropDown.Items.Add(dataGridViewHost);
dropDown.show();
三条语句上
解决慢办法是:再分配一个DataGridView实例,但总觉不爽。
搞不清啥原因,还望赐教

  回复  引用    

#15楼  2008-02-20 12:16 Stephen.Ju      
版主:为什么我把下拉datagridview的DropDownStyle属性值设为:DropDownList时,选择下拉datagridview的值后,里面不显示值??
急!急!急!急!急!急!急!急!急!急!急!急!
  回复  引用  查看    

//设置DataGridView的数据源
Form frmDataSource = new Form();
frmDataSource.Controls.Add(dataGridView);
frmDataSource.SuspendLayout();

请问,基类有数据源,卫生么要声明个窗体呢,不解,万望指导
  回复  引用    

楼言主啊,14楼的问题要怎么解决啊.
如果datagridview.rows.add(10)就能添加上10行空行.(手动加太笨了吧.)
可14楼的问题解决的办法是什么呢?
  回复  引用    

#18楼  2008-05-06 15:20 刘艳飞 [未注册用户]
我想提个问题.就是下拉框里面的DataGridView怎么不能拖动来调整大小.
  回复  引用    

#19楼  2008-05-10 09:33 0009      
强烈关注14楼提出的问题,楼主加我QQ讨论一下 46865639
  回复  引用  查看    

#20楼  2008-05-17 13:28 ac [未注册用户]
新增一个
private DataTable GetDataTable2()
{
DataTable dt = new DataTable();
dt.Columns.Add("编号");
dt.Columns.Add("姓名");
dt.Columns.Add("部门");

DataRow one = dt.NewRow();
one["编号"] = "1001";
one["姓名"] = "王小二";
one["部门"] = "销售部";
dt.Rows.Add(one);

DataRow two = dt.NewRow();
two["编号"] = "1002";
two["姓名"] = "老陈";
two["部门"] = "财务部";
dt.Rows.Add(two);

DataRow three = dt.NewRow();
three["编号"] = "1003";
three["姓名"] = "老张";
three["部门"] = "人事部";
dt.Rows.Add(three);

return dt;

}
当我选择编号后(编号在下拉框里显示)姓名马上显示在它后面的text中,怎么编程
  回复  引用    


<



标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

相关文章:

相关链接: