ListView单击单元格 产生其他控件
以combobox为例。
假如一行里面只有一个combobox。
//在类中声明一个控件数组
private ComboBox[] cmds = null; //initview中调用dao组件获得显示的对象列表
List<Indicator> plist = idao.queryIndicators(); //根据对象列表个数new一组cmds
cmds=new ComboBox[plist.Count]; //在view的SelectedIndexChanged事件中
if (this.listView1.SelectedItems.Count > )
{
//获得选中的行
ListViewItem item = this.listView1.SelectedItems[];
//获得行号
int index=this.listView1.SelectedIndices[];
cmds[index] = new ComboBox();
for (int i = ; i <= ; i++){
cmds[index].Items.Add(i + "");
cmds[index].SelectedItem = "";
cmds[index].Bounds = item.SubItems[].Bounds;
listView1.Controls.Add(cmds[index]);
cmds[index].Show();
}
}
如果一行有多个combobox呢? 这和一行一个的区别在于,一行两个不仅需要确定选中的是哪行,还要确定哪列。
虽然只差这一点,但是实现确完全不同。
private void indicatorView_MouseMove(object sender, MouseEventArgs e)//获取鼠标位置
{
mousePos.X = e.X;
mousePos.Y = e.Y;
}
private void indicatorView_Click(object sender, EventArgs e)
{
ListViewItem item = indicatorView.GetItemAt(mousePos.X, mousePos.Y);//根据鼠标当前位置得到item
Rectangle rect = item.GetBounds(ItemBoundsPortion.Entire);
int StartX = rect.Left;
int ColumnIndex = ;
int pos = GetScrollPos(this.indicatorView.Handle.ToInt32(), );
foreach (ColumnHeader Column in indicatorView.Columns)//选中的哪一列
{
if (mousePos.X + pos >= StartX + Column.Width)
{
StartX += Column.Width;
ColumnIndex += ;
}
}
if (ColumnIndex == this.indicatorView.Columns.Count - )//如果选中最后一列
{
int index = this.indicatorView.SelectedIndices[];
indicatorViewComboBox[index] = new ComboBox();
for (int i = ; i <= ; i+=)
indicatorViewComboBox[index].Items.Add(i + "");
indicatorViewComboBox[index].SelectedItem = "";
indicatorViewComboBox[index].Bounds = item.SubItems[ColumnIndex].Bounds;
indicatorView.Controls.Add(indicatorViewComboBox[index]);
indicatorViewComboBox[index].Show();
}
else if (ColumnIndex == this.indicatorView.Columns.Count - ) { //其他列
} }
ListView单击单元格 产生其他控件的更多相关文章
- ios-根据单元格里的控件tag值,在方法外获得对应的section与row的值
在cell的代理方法里:cellForRowAtIndexPath btn.tag = indexPath.section *100 + indexPath.row; [cell.exitPerson ...
- C# 在DataGridView中,点击单元格调出 TreeView控件 或 ListBox控件
1.调出 TreeView控件 或 ListBox控件 private void deductGrid1_CellClick(object sender, DataGridViewCellEvent ...
- 【转】【C#】在 Windows 窗体 DataGridView 单元格中承载控件
using System; using System.Windows.Forms; public class CalendarColumn : DataGridViewColumn { public ...
- gridView 单元格绑定不同控件方法
1.主要代码: private void Form3_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Col ...
- easyui datagrid单击单元格选择此列
示例代码实现单击jquery easyui datagrid的单元格时,取消datagrid默认选中高亮此行的样式,改为选中单击的单元格所在的列,高亮此列上的所有单元格.可以配置全局single变量, ...
- asp.net gridview中增加单击单元格事件
实现功能:单击表格中某个单元格(不是第一列.最后一列.最后一行,不为0)根据行第一个单元格内容及列名来查询详细内容,在消息框中查看显示. 在代码中增加 protected override void ...
- Gridview 重建表头/单击单元格弹出对话框/改变单元格背景色
整理工作~ 完整的代码在GitHub上, 路径: 项目背景:追踪某个issue,并且记录每天的状态. 要求:1.点击日期就能更改,并且用颜色标志不同的状态 2.增加按钮可关闭issue 3.布局要求日 ...
- C# Winform ListView实现单元格双击复制内容到剪贴板
private void listView_MouseDoubleClick(object sender, MouseEventArgs e) { ListView listview = (ListV ...
- ListView中Item与Checkable子类控件抢焦点问题
Android开发中,经常需要为ListView定制Adapter,绑定各种子类控件.如果Item包含Button等Checkable的控件,那么就会发生点击Item无法响应的问题.原因是自己定义的I ...
随机推荐
- 导出excel表功能
前台: <asp:Button ID="btndao" runat="server" Text="导出excel文件" onclic ...
- C语言中的关键字
1.C语言中的关键字都有实际的意义. 2.C语言中的23个关键字如下: char:声明字符型变量. short:声明短整型变量. int:声明整型变量. long:声明长整型变量. float:声明浮 ...
- SQL语句统计一段时间内的记录数
实际应用中经常需要统计单位时间的记录数: 一个小时: SELECT ),createdate,) AS 日期 ,DATEPART(hh,createdate) AS 小时,COUNT(*)AS 记录 ...
- 由window.history.back()引发的问题
由window.history.back()引发的问题 编写人:CC阿爸 2015-1-30 今天在这里,我想与大家一起分享由windows.history.back()引发的问题,笔者在实际开发当中 ...
- php 实现多线程
通过php的Socket方式实现php程序的多线程.php本身是不支持多线程的,那么如何在php中实现多线程呢?可以想一下,WEB服务器本身都是支持多线程的.每一个访问者,当访问WEB页面的时候,都将 ...
- 在 PHP 中结合 Ajax 技术进行图片上传
前面几则日志中讲述了在 PHP 中上传文件,相信大家对 PHP 中如何进行文件上传已经初步掌握.本文来继续探讨在 PHP 中上传文件的技术,不同的是,本次上传将仅限于图片文件的上传,并且将采用 Aja ...
- CSS 设置TABLE 表格 边框
/*table列表 合并边框设置*/ .tablelist { border-collapse:collapse; } /*table列表 设置边框宽度及颜色*/ .tablelist td { bo ...
- Tomcat工作原理
http://www.cnblogs.com/shootercheng/p/5838645.html
- 利用HttpWebRequest访问WebApi
WebApi现在越来越流行,下面给出利用HttpWebRequest访问WebApi的工具方法: 1.利用基准URL和参数字典生成完整URL /// <summary> /// 生成URL ...
- python 序列化之JSON和pickle详解
JSON模块 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类 ...