/// <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);
        }