Discussion/proposal: add more LVCOLUMN ComCtl 6.0 features
- Dominant language
- C#
- Stars
- 4.9k
- Forks
- 1.1k
- Avg merge
- 1d 13m
- Merged PRs (30d)
- 85
Description
In Windows Vista, more `LVCOLUMN` features were added: see https://docs.microsoft.com/en-us/windows/win32/api/commctrl/ns-commctrl-lvcolumnw
# Missing Features
## Minimum Width
- Can set the `LVCF_MINWIDTH` flag on `mask` and set the `cxMin` value
Would add the following API on `ColumnHeader`
```cs
public class ColumnHeader
{
...
public int MinimumWidth { get; set; } = 0;
...
}
```
E.g.
Notice that when resizing the column its minimum width is 100 pixels

## Fixed Width Columns
- Can set the `LVCF_FMT` flag on `mask` an set the `LVCFMT_FIXED_WIDTH` flag on `fmt`
Would add the following API on `ColumnHeader`
```cs
public class ColumnHeader
{
...
public bool FixedWidth { get; set; } = false;
...
}
```
E.g.
Notice that the column can't be resized

## Split Button Columns
- Can set the `LVCF_FMT` flag on `mask` an set the `LVCFMT_SPLITBUTTON` flag on `fmt`
Would add the following API on `ListView` and `ColumnHeader`
```cs
public class ColumnDropDownClickEventArgs : ColumnClickEventArgs
{
public ColumnDropDownClickEventArgs(int column, Point screenLocation);
public Point ScreenLocation { get; set; }
}
public class ListView
{
...
public event ColumnDropDownClickedEventHandler ColumnDropDownClicked { add; remove; }
protected void OnColumnDropDownClicked(ColumnDropDownClickEventArgs e);
...
}
public class ColumnHeader
{
...
public bool SplitButton { get; set; } = false;
...
}
```
E.g.

# Discussion
- Should we consolidate things like Split Button and Fixed width into a flags enum and add this as a property (e.g. `Style`) on `ColumnHeader`
```cs
[Flags]
public enum ColumnHeaderStyles
{
None,
FixedWidth = X,
SplitButton = Y
}
```
/cc @weltkante
Contributor guide
Assessment
This issue has not been assessed yet.