这个Combox下拉很多人都在用  但其中绘制的语句如下:

    #endregion
#region 方法
#region 绘制DataGridView以及下拉DataGridView
private void DrawDataGridView()
{
DataGridView dataGridView = new DataGridView();
dataGridView.ScrollBars = ScrollBars.Both;
dataGridView.AutoSize = true;
dataGridView.AllowUserToAddRows = false;
dataGridView.AllowUserToDeleteRows = false;
dataGridView.AllowUserToResizeRows = false;
dataGridView.Dock = DockStyle.Fill;
dataGridView.DataSource = null; dataGridView.BackgroundColor = SystemColors.Control;
dataGridView.BorderStyle = BorderStyle.None;
dataGridView.ReadOnly = true;
dataGridView.AllowUserToAddRows = false;
dataGridView.RowHeadersVisible = false;
dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView.DoubleClick += new EventHandler(dataGridView_DoubleClick);
dataGridView.KeyDown += new KeyEventHandler(dataGridView_KeyDown); //设置DataGridView的数据源
Form frmDataSource = new Form();
frmDataSource.Controls.Add(dataGridView); dataGridViewHost = new ToolStripControlHost(dataGridView);
dataGridViewHost.AutoSize = m_blPopupAutoSize;
TextBox textBox = new TextBox();
textBox.Width = ;
textBox.TextChanged += new EventHandler(textBox_TextChanged);
textBox.KeyDown += new KeyEventHandler(textBox_KeyDown);
textBoxHost = new ToolStripControlHost(textBox);
textBoxHost.AutoSize = false; dropDown = new ToolStripDropDown();
dropDown.Items.Add(textBoxHost);
dropDown.Items.Add(dataGridViewHost);
dropDown.AutoSize = true;
}
#endregion

这个过程也很好理解  一个ToolStripDropDown控件  里面放了两个ToolStripControlHost,单机Combox就让这个ToolStripDropDown控件显示就行,问题在这句
            //设置DataGridView的数据源
            Form frmDataSource = new Form();
            frmDataSource.Controls.Add(dataGridView);
不理解其中的原因,dataGridView的dataSource是在程序外调用的,但是不用这句,下拉框里不绑定数据,为了让更直观理解 ,在放个例子:

public partial class Form2 : Form
{
private ToolStripControlHost dataGridViewHost;
private ToolStripDropDown dropDown;
public Form2()
{
InitializeComponent();
} private void Form2_Load(object sender, EventArgs e)
{
DataGridView dataGridView = new DataGridView();
//Form frmDataSource = new Form();
//frmDataSource.Controls.Add(dataGridView);
//或者这个窗体的任何一个容器类添加这个dataGridView
dataGridView.Dock = DockStyle.Fill;
dataGridView.DataSource = createStudentTable(); //设置DataGridView的数据源 dataGridViewHost = new ToolStripControlHost(dataGridView);
dropDown = new ToolStripDropDown(); dropDown.Items.Add(dataGridViewHost);
contextMenuStrip1.Items.Add(dataGridViewHost);
} /// <summary>
/// 生产测试数据
/// </summary>
/// <returns></returns>
private DataTable createStudentTable()
{
DataTable dt = new DataTable();
DataColumn dc = new DataColumn("学号");
dt.Columns.Add(dc);
dc = new DataColumn("姓名");
dt.Columns.Add(dc);
dc = new DataColumn("性别");
dt.Columns.Add(dc);
dc = new DataColumn("专业");
dt.Columns.Add(dc);
dc = new DataColumn("入学年份");
dt.Columns.Add(dc); DataRow dr = dt.NewRow();
dr["学号"] = "";
dr["姓名"] = "刘德华";
dr["性别"] = "男";
dr["专业"] = "影视表演";
dr["入学年份"] = "";
dt.Rows.Add(dr); dr = dt.NewRow();
dr["学号"] = "";
dr["姓名"] = "张学友";
dr["性别"] = "男";
dr["专业"] = "计算机科学技术";
dr["入学年份"] = "";
dt.Rows.Add(dr); dr = dt.NewRow();
dr["学号"] = "";
dr["姓名"] = "郭富城";
dr["性别"] = "男";
dr["专业"] = "哲学系";
dr["入学年份"] = "";
dt.Rows.Add(dr); dr = dt.NewRow();
dr["学号"] = "";
dr["姓名"] = "柳岩";
dr["性别"] = "女";
dr["专业"] = "模特专业(裸模方向)";
dr["入学年份"] = "";
dt.Rows.Add(dr); dr = dt.NewRow();
dr["学号"] = "";
dr["姓名"] = "郭德纲";
dr["性别"] = "男";
dr["专业"] = "中文系";
dr["入学年份"] = "";
dt.Rows.Add(dr); return dt;
}
}

问题还是这样  如果不添加  右键弹出的GridView没有数据  注释掉那句  就有数据了,求解答。懂的人说

Combox下拉绑定DataGridView的更多相关文章

  1. VC++ ComBox下拉菜单看不到值

    在使用ComBox的时候,我是预先在属性页里面添加了数据的.但是在运行程序是发现,点击下拉时,一个值都看不到! 如图: 在这:http://blog.csdn.net/nma_123456/artic ...

  2. dev中如何对combox下拉框设置可消除属性以及ASPxGridView中金额,数量的显示,以及总计、grid中某行值

    下拉框属性关键:IncrementalFilteringMode="StartsWith" DropDownStyle="DropDown" ASPxGridV ...

  3. WPF ComboBox下拉绑定Treeview 功能的实现

    因为项目需要,接触到这个功能点,借助网络还有自己的一点摸索,实现了这个功能.相关代码如下: XAML部分的代码: <ComboBox Grid.Row=" RenderTransfor ...

  4. 微信小程序picker下拉绑定数据

    页面部分 <picker mode = "selector" bindchange="bindPickerChange" value="{{pr ...

  5. asp.net中如何绑定combox下拉框数据(调用存储过程)

    #region 绑定类型(商品类型.仓库名称) public void DataType_Bind(int _peoid) { DataTable dt_goodsname = new DataTab ...

  6. winform的combox下拉框绑定数据源

    List<Site> list = new List<Site>(); foreach (DataRow srcDr in srcDt.Rows) { list.Add(new ...

  7. EXT.NET Combox下拉Grid

    <ext:ComboBox ID="cmbCategory" runat="server" TypeAhead="true" Forc ...

  8. 快速设计ComboBox下拉框

    传统软件项目开发时,需要每个控件一个一个的来设计,同时需要在页面功能中对每个控件的属性进行判定处理,尤其是页面风格布局样式需要花去一大半的时间,并且后续要想修改是非常麻烦繁琐,这样就导致设计完成一个功 ...

  9. javascript实现可编辑的下拉框

    曾经遇到过一个需求的情况是这样的,我们提供给用户的输入框的可选择项只能满足用户的大部分情况的选择,但是有时候会遇到一些用户想要输入的数据是下拉项中所没有的,而用户不希望改变下拉项为输入框模式,需要说如 ...

随机推荐

  1. 《JS权威指南学习总结--4.9.3in和instanceof运算符》

    内容要点: 一.in运算符 in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象.如果右侧的对象拥有一个名为左操作数数值的属性名,那么表达式返回true. 例如: va ...

  2. 如何获取网页验证码图片并保存到本地(Java实现) [问题点数:40分,结帖人lanxuezaipiao]

    http://bbs.csdn.net/topics/390426978 public static String readCheckImage(HashMap<String, String&g ...

  3. C语言中的string.h中的内存字符串处理函数

    转载请注明出处:http://blog.csdn.net/zhubin215130/article/details/8993403 void *memcpy(void *dest, const voi ...

  4. getuid和geteuid的区别

    getuid() :  函数返回一个调用程序的真实用户ID.表明当前运行位置程序的执行者. geteuid(): 函数返回返回一个有效用户的ID.(EUID)是你最初执行程序时所用的ID,该ID是程序 ...

  5. php:sprintf

    十六进制 $hex = sprintf("%x",18); 输出:12(%x表示十六进制) $hex = sprintf("%4x",18); 输出:strin ...

  6. spring security 3 自定义认证,授权示例

    1,建一个web project,并导入所有需要的lib. 2,配置web.xml,使用Spring的机制装载: <?xml version="1.0" encoding=& ...

  7. ajax学习之post请求步骤

    ajax学习之post请求步骤 蚣汉御豁 讼护尧 娉郐皑 磲 力豪强的虎视眈眈相信过不了 觏随迦趾 怪了灵敏儿竟然不慌不忙的也没有来找她们 缸轰诎 ?ê戆冼 跄鲅胗绩 掳戈玉孑 馀模嗷婧 ...

  8. 获取输入设备的vid和pid

    一.获取/dev/input/event16设备的vid和pid testhid.c #include <linux/types.h> #include <linux/input.h ...

  9. Eclipse的Console乱码

    1.找到服务器bin目录:例:D:\WebLogic_11g\Middleware\user_projects\domains\dsrhd_domain\bin, 在该目录下找到setDomainEn ...

  10. struts2获取请求参数的三种方式及传递给JSP参数的方式

    接上一篇文章 package test; import com.opensymphony.xwork2.ActionSupport; import javax.servlet.http.*; impo ...