this.ListFilters.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.ListFilters_DrawItem);
this.ListFilters.SelectedIndexChanged += new System.EventHandler(this.ListFilters_SelectedIndexChanged);
this.ListFilters.DoubleClick += new System.EventHandler(this.ListFilters_DoubleClick);
+ this.ListFilters.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ListFilters_KeyDown);
//
// EditFilterGroup
//
{
private EDITMODE _mode;
private bool _directAdd;
- private bool _moveRules = false;
+ private MultiSelectionState _multiSelState = MultiSelectionState.None;
private TabInformations _sts;
private string _cur;
private List<string> idlist = new List<string>();
Disable,
}
+ [Flags]
+ private enum MultiSelectionState
+ {
+ None = 0,
+ MoveSelected = 1,
+ SelectAll = 2,
+ }
+
private EnableButtonMode RuleEnableButtonMode
{
get { return this._ruleEnableButtonMode; }
private void ListFilters_SelectedIndexChanged(object sender, EventArgs e)
{
- if (_moveRules)
+ if (_multiSelState != MultiSelectionState.None) //複数選択処理中は無視する
return;
ShowDetail();
try
{
- _moveRules = true; // SelectedIndexChanged を無視する
+ _multiSelState |= MultiSelectionState.MoveSelected;
using (ControlTransaction.Update(ListFilters))
{
}
finally
{
- _moveRules = false;
+ _multiSelState &= ~MultiSelectionState.MoveSelected;
}
}
e.DrawFocusRectangle();
}
+ private void ListFilters_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.Control && e.KeyCode == Keys.A)
+ {
+ var itemCount = this.ListFilters.Items.Count;
+ if (itemCount == 0) return;
+
+ using (ControlTransaction.Update(this.ListFilters))
+ {
+ if (itemCount > 1)
+ {
+ try
+ {
+ _multiSelState |= MultiSelectionState.SelectAll;
+
+ for (int i = 1; i < itemCount; i++)
+ {
+ this.ListFilters.SetSelected(i, true);
+ }
+ }
+ finally
+ {
+ _multiSelState &= ~MultiSelectionState.SelectAll;
+ }
+ }
+
+ this.ListFilters.SetSelected(0, true);
+ }
+ }
+ }
+
protected override void OnFontChanged(EventArgs e)
{
base.OnFontChanged(e);