2
You can modify your code to use a ListView
control within your Form
:
- Add a
ListView
control to your form.
- Use the
ListView
control's HitTest
method and Items
property.
Here's an updated version of your 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;
public class Form6 : Form
{
private ComboBox comboBox;
private int comboBoxIndex;
private ListView listView;
public Form6()
{
InitializeComponent();
listView = new ListView();
listView.Bounds = new Rectangle(new Point(10, 10), new Size(300, 200));
listView.View = View.Details;
listView.Columns.Add("Column 1", -2, HorizontalAlignment.Left);
listView.Columns.Add("Column 2", -2, HorizontalAlignment.Left);
listView.Items.Add(new ListViewItem(new string[] { "Item 1", "SubItem 1" }));
listView.Items.Add(new ListViewItem(new string[] { "Item 2", "SubItem 2" }));
listView.MouseClick += ListView_MouseClick;
this.Controls.Add(listView);
comboBox = new ComboBox();
comboBox.Visible = false;
comboBox.SelectedIndexChanged += ComboBox_SelectedIndexChanged;
this.Controls.Add(comboBox);
}
private void ListView_MouseClick(object sender, MouseEventArgs e)
{
var hitTest = listView.HitTest(e.Location);
if (hitTest.Item != null && hitTest.SubItem != null)
{
comboBoxIndex = hitTest.Item.Index;
comboBox.Bounds = hitTest.SubItem.Bounds;
comboBox.Items.Clear();
comboBox.Items.AddRange(new string[] { "Option 1", "Option 2", "Option 3" });
comboBox.Visible = true;
comboBox.BringToFront();
comboBox.Focus();
}
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBoxIndex >= 0 && comboBoxIndex < listView.Items.Count)
{
listView.Items[comboBoxIndex].SubItems[1].Text = comboBox.SelectedItem.ToString();
}
comboBox.Visible = false;
}
}
In this updated code:
- A
ListView
control is added to the form.
- The
ListView
control's MouseClick
event is used to handle the display of the ComboBox
.
- The
HitTest
method and Items
property are used on the ListView
control.
Thanks

2
The HitTest
method in the ListView
control is used to determine which item or subitem is located at a specific point, typically where the user has clicked. It returns a ListViewHitTestInfo
object that provides information about the item, subitem, and location.
If you're getting an error with this.HitTest(e.Location)
, it might be due to a few reasons:
- Namespace Issue: Ensure you have the correct namespaces included:
using System.Windows.Forms;
-
Event Argument: Make sure you're using the correct event argument. The MouseClick
event uses MouseEventArgs
, which provides the Location
property.
-
Control Type: Verify that you're using the HitTest
method on a ListView
control.
Here's a more detailed example to help you troubleshoot:
private void ComboBoxListView_MouseClick(object sender, MouseEventArgs e)
{
ListViewHitTestInfo hitTest = this.HitTest(e.Location);
if (hitTest.Item != null && hitTest.SubItem != null)
{
comboBoxIndex = hitTest.Item.SubItems.IndexOf(hitTest.SubItem);
comboBox.Bounds = hitTest.SubItem.Bounds;
comboBox.Items.Clear();
comboBox.Items.AddRange(new string[] { "Option 1", "Option 2", "Option 3" });
comboBox.Visible = true;
comboBox.BringToFront();
comboBox.Focus();
}
}
If the error persists, please provide more details about the error message you're encountering. This will help in diagnosing the issue more accurately.

2
Displaying a ComboBox dropdown list within a ListView control in a Windows application can be a bit tricky, but it's definitely doable. Here's a basic approach to get you started:
-
Create a custom ListView control: You'll need to subclass the ListView control to handle the display of the ComboBox.
-
Handle the ComboBox creation and positioning: You'll need to create and position the ComboBox when the user clicks on a specific cell in the ListView.
-
Update the ListView with the selected value: Once the user selects a value from the ComboBox, update the ListView with the selected value.
Here's a simple example in C#:
public class ComboBoxListView : ListView
{
private ComboBox comboBox;
private int comboBoxIndex;
public ComboBoxListView()
{
comboBox = new ComboBox();
comboBox.Visible = false;
comboBox.SelectedIndexChanged += ComboBox_SelectedIndexChanged;
this.Controls.Add(comboBox);
this.MouseClick += ComboBoxListView_MouseClick;
}
private void ComboBoxListView_MouseClick(object sender, MouseEventArgs e)
{
var hitTest = this.HitTest(e.Location);
if (hitTest.Item != null && hitTest.SubItem != null)
{
comboBoxIndex = hitTest.Item.SubItems.IndexOf(hitTest.SubItem);
comboBox.Bounds = hitTest.SubItem.Bounds;
comboBox.Items.Clear();
comboBox.Items.AddRange(new string[] { "Option 1", "Option 2", "Option 3" });
comboBox.Visible = true;
comboBox.BringToFront();
comboBox.Focus();
}
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBoxIndex >= 0 && comboBoxIndex < this.Items.Count)
{
this.Items[comboBoxIndex].SubItems[1].Text = comboBox.SelectedItem.ToString();
}
comboBox.Visible = false;
}
}
In this example:
- A
ComboBox
is added to the ListView
control.
- When the user clicks on a cell, the
ComboBox
is displayed at the cell's location.
- The
ComboBox
is populated with some options.
- When the user selects an option, the
ListView
is updated with the selected value.
Thanks

1

Bro i need display like that when on click in combobox listview like that show what ever your send code is workiing fine but i need like that above image
1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
private ComboBox comboBox;
private int comboBoxIndex;
public Form6()
{
InitializeComponent();
comboBox = new ComboBox();
comboBox.Visible = false;
comboBox.SelectedIndexChanged += ComboBox_SelectedIndexChanged;
this.Controls.Add(comboBox);
this.MouseClick += ComboBoxListView_MouseClick;
}
private void ComboBoxListView_MouseClick(object sender, MouseEventArgs e)
{
var hitTest = this.HitTest(e.Location);
if (hitTest.Item != null && hitTest.SubItem != null)
{
comboBoxIndex = hitTest.Item.SubItems.IndexOf(hitTest.SubItem);
comboBox.Bounds = hitTest.SubItem.Bounds;
comboBox.Items.Clear();
comboBox.Items.AddRange(new string[] { "Option 1", "Option 2", "Option 3" });
comboBox.Visible = true;
comboBox.BringToFront();
comboBox.Focus();
}
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBoxIndex >= 0 && comboBoxIndex < this.Items.Count)
{
this.Items[comboBoxIndex].SubItems[1].Text = comboBox.SelectedItem.ToString();
}
comboBox.Visible = false;
}
your code only i copied but is not working the error is highlight in on hittest
Severity Code Description Project File Line Suppression State
Error CS1061 'Form6' does not contain a definition for 'HitTest' and no accessible extension method 'HitTest' accepting a first argument of type 'Form6' could be found (are you missing a using directive or an assembly reference?)
Severity Code Description Project File Line Suppression State
Error CS1061 'Form6' does not contain a definition for 'Items' and no accessible extension method 'Items' accepting a first argument of type 'Form6' could be found (are you missing a using directive or an assembly reference?)

1
this.HitTest(e.Location) i am gettting error on hittest what is that hittest
1
To display a ComboBox dropdown list inside a ListView control in a Windows application, you typically need to use a custom solution because the ListView control does not natively support embedding ComboBoxes. Here's a general approach you can take:
-
Create a Windows Forms Application: Start by creating a new Windows Forms application in Visual Studio.
-
Add a ListView Control: Drag and drop a ListView control onto your form from the toolbox.
-
Handle the ListView's SubItem Click Event: You can use the ItemMouseClick
event of the ListView to trigger the ComboBox display when a certain sub-item is clicked.
-
Add a ComboBox Control: Create a ComboBox and set its properties according to your needs. Initially, you can set it to be invisible.
-
Show the ComboBox on Click: When a specific cell (sub-item) in the ListView is clicked, you can position the ComboBox over that cell and populate it with the desired items.
-
Handle ComboBox Events: Make sure to handle the ComboBox's SelectedIndexChanged
event to capture the selected value and update the ListView accordingly.
Example Code:
Here's a simplified example to illustrate the concept:
private void listView1_ItemMouseClick(object sender, ListViewItemMouseClickEventArgs e)
{
\/\/ Assuming you want to show ComboBox when clicking on the first column
if (e.Item.Index >= 0 && e.SubItem.Index == 0) \/\/ Change index as needed
{
comboBox1.Location = e.Location; \/\/ Set location of ComboBox to the clicked item
comboBox1.Visible = true; \/\/ Make ComboBox visible
comboBox1.BringToFront(); \/\/ Bring ComboBox to front
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
\/\/ Update ListView with the selected value from ComboBox
listView1.SelectedItems[0].SubItems[0].Text = comboBox1.SelectedItem.ToString();
comboBox1.Visible = false; \/\/ Hide ComboBox after selection
}
