| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 729 人关注过本帖
标题:[求助]如何显示加入到dataGrid中的控件?
只看楼主 加入收藏
guxinglengyue
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2006-7-17
收藏
 问题点数:0 回复次数:8 
[求助]如何显示加入到dataGrid中的控件?

dataGrid1.Controls.Add(comboBox1);
原本设想当光标移到表格的第二列时显示下拉复合框,以方便输入,可实际是表格的CurrentCell位于comboBox1上,于是我将comboBox1的width增大,使得comboBox1的下拉箭头从右边露了出来,可这样不美观,comboBox1的宽度挤到第三列上去了,有什么办法使得comboBox1在表格的文本单元格上面?

搜索更多相关主题的帖子: dataGrid 控件 表格 光标 
2006-08-08 15:54
guxinglengyue
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2006-7-17
收藏
得分:0 
另外,ComboBox能显示两列吗?即是否可以绑定数据表的两个字段?
2006-08-08 15:57
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 

能發個具體圖片看看?


[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-08 15:59
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
以下是引用guxinglengyue在2006-8-8 15:57:45的发言:
另外,ComboBox能显示两列吗?即是否可以绑定数据表的两个字段?

好像不能
用字典做個印射就行


[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-08 16:01
olive_if
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-8-2
收藏
得分:0 

这个问题我也遇到过,那如果是Button的话,怎么邦定阿!
如果直接在DataGrid里邦定的话,就只是一个平面结构,很难看!
DataGridTableStyle tblStyle = new DataGridTableStyle();
tblStyle.MappingName = t.TableName
myGrid.TableStyles.Add(tblStyle);
DataGridTextBoxColumn dgtb =(DataGridTextBoxColumn)myGrid.TableStyles[0].GridColumnStyles[1];

ComboBox cmbbox = new ComboBox();
cmbbox.Items.AddRange(new object[]{"选项一","选项二","选项三"});
cmbbox.Cursor = Cursors.Arrow;
cmbbox.DropDownStyle= ComboBoxStyle.DropDownList;
cmbbox.Dock = DockStyle.Fill;

    //把ComboBox添加到DataGridTableStyle的第一列

dgtb.TextBox.Controls.Add(cmbbox);

[此贴子已经被作者于2006-8-8 16:56:22编辑过]

2006-08-08 16:17
guxinglengyue
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2006-7-17
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

当整行选定的时候comboBox1正常显示出来了,单击第二列的某个单元格,comboBox1不能正常显示,但隐约可见,事实上是被表格单元格给盖住了,怎么样才能让comboBox1处在上面?
private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{
if (dataGrid1.CurrentCell.ColumnNumber == 1)
{
Rectangle rect = dataGrid1.GetCellBounds(dataGrid1.CurrentCell);
comboBox1.SetBounds(rect.Left,rect.Top,rect.Width,rect.Height);
comboBox1.Visible = true;
string str = dataGrid1[dataGrid1.CurrentCell.RowNumber,
dataGrid1.CurrentCell.ColumnNumber].ToString()
for (int i = 0; i < comboBox1.Items.Count; i ++)
{
if (comboBox1.Items[i].ToString() == str)
{
comboBox1.SelectedIndex = i;
break;
}
}
}
else
{
comboBox1.Visible = false;
}
}
2006-08-08 17:08
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
把comboBox1它弄短點呢

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-08 17:47
guxinglengyue
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2006-7-17
收藏
得分:0 
??

弄短点有什么用?弄长点右边那个下拉箭头就可以显示出来了,不过侵占第三列的领域了。应该有办法的吧?我好像看到过的。

2006-08-09 07:43
guxinglengyue
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2006-7-17
收藏
得分:0 
总算搞定了

根据程序运行的特点,我猜想是因为表格单元格获得焦点而盖住了comboBox1,于是我在CurrentCellChanged事件中加了两行代码,结果OK了,与大家分享一下。
private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{
if (dataGrid1.CurrentCell.ColumnNumber == 1)
{
Rectangle rect = dataGrid1.GetCellBounds(dataGrid1.CurrentCell);
comboBox1.SetBounds(rect.Left,rect.Top,rect.Width,rect.Height);
button1.Focus(); //焦点撤离表格,下行代码使comboBox1显示出来。
comboBox1.Visible = true;
dataGrid1.Focus(); //焦点又回到表格,但焦点去来之后,当前单元格没有变化,只是没了输入光标,因此comboBox1就显示出来了。先前我单击第二列的某个单元格,由于鼠标单击使当前单元格获得了输入光标,因此comboBox1不能正常显示了。
string str = dataGrid1[dataGrid1.CurrentCell.RowNumber,
dataGrid1.CurrentCell.ColumnNumber].ToString()
for (int i = 0; i < comboBox1.Items.Count; i ++)
{
if (comboBox1.Items[i].ToString() == str)
{
comboBox1.SelectedIndex = i;
break;
}
}
}
else
{
comboBox1.Visible = false;
}
}

2006-08-09 08:11
快速回复:[求助]如何显示加入到dataGrid中的控件?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028212 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved