C# 双击ListView出现编辑框可编辑,回车确认
//获取鼠标点击的项------API
[DllImport("user32")]
public static extern int GetScrollPos(int hwnd, int nBar);
private TextBox txtInput;
//获取点击项的位置
private void lViewPersonWork_MouseDoubleClick(object sender, MouseEventArgs e)
{
try
{
ListViewItem item = this.lViewPersonWork.GetItemAt(e.X, e.Y);
//找到文本框
Rectangle rect = item.GetBounds(ItemBoundsPortion.Entire);
int StartX = rect.Left; //获取文本框位置的X坐标
int ColumnIndex = 0; //文本框的索引
//获取列的索引
//得到滑块的位置
int pos = GetScrollPos(this.lViewPersonWork.Handle.ToInt32(), 0);
foreach (ColumnHeader Column in lViewPersonWork.Columns)
{
if (e.X + pos >= StartX + Column.Width)
{
StartX += Column.Width;
ColumnIndex += 1;
}
}
if (ColumnIndex < this.lViewPersonWork.Columns.Count - 1)
{
return;
}
this.txtInput = new TextBox();
//locate the txtinput and hide it. txtInput为TextBox
this.txtInput.Parent = this.lViewPersonWork;
//begin edit
if (item != null)
{
rect.X = StartX;
rect.Width = this.lViewPersonWork.Columns[ColumnIndex].Width; //得到长度和ListView的列的长度相同
this.txtInput.Bounds = rect;
this.txtInput.Multiline = true;
//显示文本框
this.txtInput.Text = item.SubItems[ColumnIndex].Text;
this.txtInput.Tag = item.SubItems[ColumnIndex];
this.txtInput.KeyPress += new KeyPressEventHandler(txtInput_KeyPress);
this.txtInput.Focus();
}
}
catch (Exception ex)
{
}
}
//回车保存内容
private void txtInput_KeyPress(object sender, KeyPressEventArgs e)
{
try
{
if ((int)e.KeyChar == 13)
{
if (this.txtInput != null)
{
ListViewItem.ListViewSubItem lvst = (ListViewItem.ListViewSubItem)this.txtInput.Tag;
lvst.Text = this.txtInput.Text;
this.txtInput.Dispose();
}
}
}
catch (Exception ex)
{
}
}
//释放文本框内容
private void lViewPersonWork_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (this.txtInput != null)
{
if (this.txtInput.Text.Length > 0)
{
ListViewItem.ListViewSubItem lvst = (ListViewItem.ListViewSubItem)this.txtInput.Tag;
lvst.Text = this.txtInput.Text;
}
this.txtInput.Dispose();
}
}
catch (Exception ex)
{
}
}
C# 双击ListView出现编辑框可编辑,回车确认的更多相关文章
- myeclipse页面编辑框空格、回车符、对齐出现特殊字符
myeclipse页面编辑框空格.回车符.对齐出现特殊字符 解决办法:window-preferences-general-editors-Text Editors 把show whitespa ...
- MFC中关于子对话框中编辑框不能编辑的问题
最近在用MFC写程序.发现子对话框中的编辑框不能编辑.具体问题是这样的: 我有一个对话框YhglDlg,创建了这个对话框的子对话框ZjyhxxDlg,子对话框的Style属性为Child,Border ...
- 双击内容变input框可编辑,失去焦点后修改的数据异步提交
<html> <head> <meta charset="utf8"> <script src="https://cdn.boo ...
- PropertyGrid—为复杂属性提供下拉式编辑框和弹出式编辑框
零.引言 PropertyGrid中我们经常看到一些下拉式的编辑方式(Color属性)和弹出式编辑框(字体),这些都是为一些复杂的属性提供的编辑方式,本文主要说明如何实现这样的编辑方式. 一.为属性提 ...
- cocos2dx基础篇(13) 编辑框之二CCEditBox
[3.x] (1)去掉"CC" (2)设置虚拟键盘的编辑类型 > EditBoxInputMode 变为强枚举 EditBox::EditBoxInputMode // SI ...
- Vue - 实现双击显示编辑框;自动聚焦点击的显示框;点击编辑框外的地方,隐藏编辑框
实现这三个功能的踩坑记录. 1. 需求 在Vue中,有一个input, 双击时编辑文本,点击该input节点外的其他地方,则取消编辑. 那么这里有三个要实现的地方 第一是双击显示编辑框. 第二是自动聚 ...
- NGUI 使用EventDelegate.Add与UIInput.onSubmit、UIInput.onChange限定编辑框中的内容
Unity中,使用NGUI,通常为某个控件(如按钮)绑定事件(单击.双击.拖拽.滚轮.选择等)都是用UIEventListener,比如: public void Bind() { UIEventLi ...
- MFC控件编程之 按钮编辑框.静态文本的使用,以及访问控件的七种方法.
MFC控件编程之 按钮编辑框.静态文本的使用以及访问控件的七种方法. 一丶按钮.静态文本的通用属性. 他们都有一个属性.就是可以输入标题内容.以及可以自定义控件ID. 创建一个MFC Dlg对话框. ...
- listview 样式 LVS_REPORT 与 LVS_EDITLABELS 编辑单元格时,当前行第一列内容不显示
今天想做一个可编辑单元格的 listview,样式是 LVS_REPORT 与 LVS_EDITLABELS 网上搜索了一些相关资料,照葫芦画瓢写了一个,可测试的时候发现,当从第2列开始编辑的时候,第 ...
随机推荐
- 排错-LR安装No Background bmp defined in ...的解决办法
LR安装No Background bmp defined in section General entry BGBmp的解决办法 by:授客 QQ:1033553122 问题描述: 我在win7装L ...
- tomcat 取消项目名访问路径
在server.xml 里,<host>...</host>的标签之间添加<Context path="" docBase="projec ...
- Fragment问题集
最近做一个APP ,因为在慕课网上学习到了新的方法来做Tab(APP主界面)效果,所以刚学不久久用起来了 用的Fragment实现Tab方法 查询了一下午的安卓资料,关于这个东西是在安卓3.0以后的 ...
- JavaScript大杂烩16 - 推荐实践
JavaScript部分 1. 总是使用===来进行相等判断 原因:由于 == 和 != 操作符存在类型转换问题,而为了保持代码中数据类型的完整性,推荐使用全等 === 和不全等 !=== 操作符. ...
- Websocket通信过程
1. 客户端与服务器建立连接 2. 客户端通过session向服务器发送消息 3. 服务器接收客户端的消息,调用服务器端的onMessage()方法包装.生成消息内容(新的消息包括客户端ID) 4. ...
- 使用wxpy自动发送微信消息(加强版)
通过使用wxpy自动发送微信消息后,笔者又加强了发送消息,堪称消息爆炸式发送 目前设置的为10秒发送一次,发送9次,每次发送10条内容 import requests import wxpy from ...
- mybatis 初始
接下来带着大家建立一个mybatis的初级项目 首先我们利用idea利用maven建立一个空项目 然后输入名称什么的就会创建一个空的maven项目了 然后我们需要在项目总得pom.xml中进行配置信息 ...
- Win10安装Redis
Redis安装 下载地址:https://github.com/MicrosoftArchive/redis/releases 下载对应的版本:这里下载Redis-x64-3.2.100 解压文件 进 ...
- 关于无限试用JetBrains产品的方案
JetBrains免费试用期限为30天,通过对其试用机制的设想,找到了其破解试用机制的方案,具体如下: 在选择试用JetBrains产品的时候,它会在 C:\Users\用户名\对应产品\config ...
- 如何开启win10的上帝模式
用了这么久的电脑,小编才知道还有“上帝模式”这一说,原谅小编的孤陋寡闻.翻阅资料才知道,上帝模式简单来说就是一个全能的控制面板,如控制面板的功能.界面个性化.辅助功能选项等方方面面的控制设置,几乎包含 ...