实现代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
ListViewItem lvi;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender,EventArgs e)
{
comboBox1.Visible = false;
listView1.Columns.Add("第一列");
listView1.Columns.Add("第二列");
listView1.Columns.Add("第三列");
this.comboBox1.Items.Add("科比");
this.comboBox1.Items.Add("姚明");
this.comboBox1.Items.Add("杜兰特");
this.comboBox1.Items.Add("邓肯");
ListViewItem item;
item = new ListViewItem(1.ToString());
item.SubItems.Add("姚明");
item.SubItems.Add("科比");
listView1.Items.Add(item);
item = new ListViewItem(2.ToString());
item.SubItems.Add("邓肯");
item.SubItems.Add("杜兰特");
listView1.Items.Add(item);
}
private void listView1_MouseUp(object sender,MouseEventArgs e)
{
lvi = this.listView1.GetItemAt(e.X,e.Y);
if (lvi != null)
{
//获取选中行的Bounds
Rectangle Rect = lvi.Bounds;
int LX = listView1.Columns[0].Width;
int RX = listView1.Columns[0].Width + listView1.Columns[1].Width;
// if (e.X > RX || e.X < LX)
//{
this.comboBox1.Visible = false;
Rect.X = listView1.Left + listView1.Columns[0].Width + 2;
Rect.Y = this.listView1.Top + 2+Rect.Y;
Rect.Width = listView1.Columns[1].Width + 2;
this.comboBox1.Bounds = Rect;
this.comboBox1.Text = lvi.SubItems[1].Text;
this.comboBox1.Visible = true;
this.comboBox1.BringToFront();
this.comboBox1.Focus();
//}
// int intColIndex = lvi.SubItems.IndexOf(lvi.GetSubItemAt(e.X,e.Y));
}
}
private void comboBox1_SelectedIndexChanged(object sender,EventArgs e)
{
lvi.SubItems[1].Text = comboBox1.Text;
// comboBox1.Visible = false;
}
private void comboBox1_MouseLeave(object sender,EventArgs e)
{
lvi.SubItems[1].Text = comboBox1.Text;
// comboBox1.Visible = false;
}
}
}
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!