C listview Adds combobox to the cell implementation code
- 2020-06-23 01:42:40
- OfStack
Implementation code:
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(" The first 1 column ");
listView1.Columns.Add(" The first 2 column ");
listView1.Columns.Add(" The first 3 column ");
this.comboBox1.Items.Add(" Kobe Bryant ");
this.comboBox1.Items.Add(" Yao Ming ");
this.comboBox1.Items.Add(" durant ");
this.comboBox1.Items.Add(" Duncan ");
ListViewItem item;
item = new ListViewItem(1.ToString());
item.SubItems.Add(" Yao Ming ");
item.SubItems.Add(" Kobe Bryant ");
listView1.Items.Add(item);
item = new ListViewItem(2.ToString());
item.SubItems.Add(" Duncan ");
item.SubItems.Add(" durant ");
listView1.Items.Add(item);
}
private void listView1_MouseUp(object sender, MouseEventArgs e)
{
lvi = this.listView1.GetItemAt(e.X, e.Y);
if (lvi != null)
{
// Get the selected row 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;
}
}
}