/// <summary> /// /// </summary> /// <param name="code"></param> /// <param name="args"></param> public static void InvokeAssociatedCallback(string code) { if (!ControlsCallbacks.ContainsKey(code)) { throw new ArgumentException("Функция обратного вызова с кодом '" + code + "' не зарегестрирована"); } ControlsCallbacks[code]?.Invoke(code); }
/// <summary> /// /// </summary> /// <param name="control"></param> public static void UnregisterControl(this ICodeButton control) { string code = GetCode(control); if (!string.IsNullOrEmpty(code)) { ControlsDictionary.Remove(code); ControlsCallbacks.Remove(code); } }
/// <summary> /// /// </summary> /// <param name="control"></param> /// <param name="code"></param> /// <param name="callback"></param> /// <returns></returns> public static string RegisterControl(this ICodeButton control, long code, ControlCallback callback) { string strCode = code.ToString(); if (ControlsDictionary.ContainsKey(strCode)) { throw new ArgumentException("Элемент с кодом '" + strCode + "' уже зарегистрирован"); } ControlsDictionary.Add(strCode, control); ControlsCallbacks.Add(strCode, callback); (control as ICodeButton).ButtonClick += (s, e) => callback.Invoke(strCode); ; return(strCode); }
/// <summary> /// /// </summary> /// <param name="control"></param> /// <param name="callback"></param> /// <returns></returns> public static string RegisterControl(this ICodeButton control, ControlCallback callback) { string strCode = GenerateCode().ToString(); long counter = 0; while (ControlsDictionary.ContainsKey(strCode)) { if (counter >= END_RANGE) { break; } strCode = GenerateCode().ToString(); counter++; } ControlsDictionary.Add(strCode, control); ControlsCallbacks.Add(strCode, callback); (control as ICodeButton).ButtonClick += (s, e) => callback.Invoke(strCode); ; return(strCode); }