создать настраиваемый ListView
, что унаследовал от стандартного ListView
в .NET
, чтобы показать enum
значения, как его Items
(WinForms
проекта):Изменить адаптированное ListView.Items после каждой сборке
public class ScrapGroupsListView : ListView
{
public event EventHandler SelectedColorChanged;
private ScrapGroup _selectedGroup = ScrapGroup.None;
[DefaultValue(ScrapGroup.None)]
public ScrapGroup SelectedScrapGroup
{
get { return _selectedGroup; }
set
{
if (_selectedGroup != value)
{
_selectedGroup = value;
foreach (ListViewItem item in this.Items)
{
if (item != null)
{
if (item.Tag != null)
{
var itemColor = (ScrapGroup)item.Tag;
if (itemColor == ScrapGroup.None)
item.Checked = value == ScrapGroup.None;
else
item.Checked = value.HasFlag(itemColor);
}
}
}
if (SelectedColorChanged != null)
SelectedColorChanged.Invoke(this, EventArgs.Empty);
}
}
}
public ScrapGroupsListView()
{
this.Items.Clear();
this.CheckBoxes = true;
this.HeaderStyle = ColumnHeaderStyle.None;
this.View = View.List;
foreach (var value in Enum.GetValues(typeof(ScrapGroup)).Cast<ScrapGroup>())
{
this.Items.Add(new ListViewItem()
{
Name = value.ToString(),
Text = value.ToString(),
Tag = value,
});
}
}
protected override void OnItemChecked(ItemCheckedEventArgs e)
{
base.OnItemChecked(e);
var checkedScrapGroup = (ScrapGroup)e.Item.Tag;
if (e.Item.Checked)
if (checkedScrapGroup == ScrapGroup.None)
SelectedScrapGroup = ScrapGroup.None;
else
SelectedScrapGroup |= checkedScrapGroup;
else
SelectedScrapGroup &= ~checkedScrapGroup;
}
}
ScrapGrouop
мое перечисление:
[Flags]
public enum ScrapGroup
{
None=0,
M=1,
E=2,
N=4,
H=8
}
, когда я поставил ScrapGroupsListView
в моей форме, все в порядке, и контроль не имеет Items:
Но каждый раз, когда я строю свой проект, то ScrapGroup
ценности добавить в ScrapGroupsListView.Items
(время разработки):
после 1-го билда:
после 2-ой сборки:
и так далее.
Где проблема?