I'm trying to modify a long script and would like advice before starting.
I had originally structure as follows:
namespace MyMainNamespace.MySubNamespace.Namespaces
{
public class MyClass : Class
{
private async void MyMethod(object sender, System.Windows.Input.KeyEventArgs e)
{
await MyControl.Dispatcher.InvokeAsync((Action) (() =>
/// GROUP A
if(Keyboard.IsKeyDown(Key.PageUp) && Keyboard.IsKeyDown(Key.A))
{
TriggerCustomEvent(MyEventA1 =>
{
DoA1;
}, null);
TriggerCustomEvent(MyEventA2 =>
{
DoA2;
}, null);
}
/// GROUP REVERSE A
else if(Keyboard.IsKeyDown(Key.PageDown) && Keyboard.IsKeyDown(Key.A))
{
TriggerCustomEvent(MyEventReverseA1 =>
{
DoReverseA1;
}, null);
TriggerCustomEvent(MyEventReverseA2 =>
{
DoReverseA2;
}, null);
}
/// GROUP B
if(Keyboard.IsKeyDown(Key.PageUp) && Keyboard.IsKeyDown(Key.B))
{
TriggerCustomEvent(MyEventB1 =>
{
DoB1;
}, null);
TriggerCustomEvent(MyEventB2 =>
{
DoB2;
}, null);
}
/// GROUP REVERSE B
else if(Keyboard.IsKeyDown(Key.PageDown) && Keyboard.IsKeyDown(Key.B))
{
TriggerCustomEvent(MyEventReverseB1 =>
{
DoReverseB1;
}, null);
TriggerCustomEvent(MyEventReverseB2 =>
{
DoReverseB2;
}, null);
}
}));
e.Handled = true;
}
}
}
Basically some KeyDown events are captured by 2 sets of if else if statements and perform some trigger events.
What I want to do next is combine multiple events into 2 new hotkeys.
Mainly, split the if else if statements into 2 groups as follows:
1st group:
GROUP A
GROUP B
2nd group:
GROUP REVERSE A
GROUP REVERSE B
I though of this solution:
Removing the if else if statements from the trigger events, and then placing the trigger events into methods.
Finally creating a new if else if statement set and calling the new trigger events methods in that new if else if statement set.
I came up with that script example:
namespace MyMainNamespace.MySubNamespace.Namespaces
{
public class MyClass : Class
{
private async void MyMethod(object sender, System.Windows.Input.KeyEventArgs e)
{
await MyControl.Dispatcher.InvokeAsync((Action) (() =>
if(Keyboard.IsKeyDown(Key.End) && Keyboard.IsKeyDown(Key.NumPad1))
{
MySingleHotkeysMethodA(); // Calling method GROUP A
MySingleHotkeysMethodB(); // Calling method GROUP B
}
else if(Keyboard.IsKeyDown(Key.Home) && Keyboard.IsKeyDown(Key.NumPad1))
{
MySingleHotkeysReverseMethodA(); // Calling method GROUP REVERSE A
MySingleHotkeysReverseMethodB(); // Calling method GROUP REVERSE B
}
/// GROUP A
public void MySingleHotkeysMethodA()
{
TriggerCustomEvent(MyEventA1 =>
{
DoA1;
}, null);
TriggerCustomEvent(MyEventA2 =>
{
DoA2;
}, null);
}
/// GROUP REVERSE A
public void MySingleHotkeysReverseMethodA()
{
TriggerCustomEvent(MyEventReverseA1 =>
{
DoReverseA1;
}, null);
TriggerCustomEvent(MyEventReverseA2 =>
{
DoReverseA2;
}, null);
}
/// GROUP B
public void MySingleHotkeysMethodB()
{
TriggerCustomEvent(MyEventB1 =>
{
DoB1;
}, null);
TriggerCustomEvent(MyEventB2 =>
{
DoB2;
}, null);
}
/// GROUP REVERSE B
public void MySingleHotkeysReverseMethodB()
{
TriggerCustomEvent(MyEventReverseB1 =>
{
DoReverseB1;
}, null);
TriggerCustomEvent(MyEventReverseB2 =>
{
DoReverseB2;
}, null);
}
}));
e.Handled = true;
}
}
}
It look sound but I must admit I'm new to this use case with the dispatcher and would greatly appreciate remarks comments or even improvement or other approach suggestions to better starting making the changes in the production script.
A bit rusty with methods location in original post.
For now I modified as follows and seems to work fine:
Will do some more testing and should be good to tackle the production script.