黄学彪
2020-07-01 304dca51c28183a9dfc192c6b93ea1c00bdd5d97
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/VerificationCodeControl.cs
@@ -7,7 +7,7 @@
    /// <summary>
    /// 验证码控件
    /// </summary>
    public class VerificationCodeControl : FrameLayout
    public class VerificationCodeControl : NormalFrameLayout
    {
        #region ■ 变量声明___________________________
@@ -20,9 +20,13 @@
        /// </summary>
        public Action<string> FinishInputEvent = null;
        /// <summary>
        /// 密码输入类型
        /// 密码输入类型(它与NumberInputOnly不共存)
        /// </summary>
        public bool SecureTextEntry = false;
        /// <summary>
        /// 输入键盘指定为数字键盘(默认为true,它与SecureTextEntry不共存)
        /// </summary>
        public bool NumberInputOnly = true;
        /// <summary>
        /// 验证码长度
        /// </summary>
@@ -64,7 +68,7 @@
                frameCode.X = i * Application.GetRealWidth(115 + 49);
                frameCode.Width = Application.GetRealWidth(115);
                frameCode.Height = Application.GetRealHeight(104);
                frameCode.Radius = (uint)Application.GetMinRealAverage(6);
                frameCode.Radius = (uint)Application.GetRealHeight(17);
                frameCode.BorderWidth = 1;
                frameCode.BorderColor = UserCenterColor.Current.TextFrameColor;
                this.AddChidren(frameCode);
@@ -73,6 +77,10 @@
                if (SecureTextEntry == true)
                {
                    txtCode.SecureTextEntry = true;
                }
                else if (NumberInputOnly == true)
                {
                    txtCode.IsNumberKeyboardType = true;
                }
                txtCode.Name = i.ToString();
                txtCode.TextAlignment = TextAlignment.Center;
@@ -84,6 +92,8 @@
                txtCode.FoucsChanged += this.TxtCode_FoucsChangedEvent;
                //值改变事件
                txtCode.TextChangeEventHandler += this.TxtCode_TextChangeEvent;
                //键盘事件
                txtCode.KeyEventAction += this.TxtCode_KeyEvent;
            }
        }
@@ -105,6 +115,21 @@
            }
            if (e.Focus == true)
            {
                //自动焦点选择前面的空白位置
                //if (txtCode.Text == string.Empty)
                //{
                //    for (int i = 0; i < this.CodeLenth; i++)
                //    {
                //        if (dicCodeControls[i].Text == string.Empty)
                //        {
                //            dicCodeControls[i].FoucsChanged -= this.TxtCode_FoucsChangedEvent;
                //            dicCodeControls[i].Parent.BorderColor = UserCenterColor.Current.TextFrameSelectColor;
                //            dicCodeControls[i].Foucs = true;
                //            dicCodeControls[i].FoucsChanged += this.TxtCode_FoucsChangedEvent;
                //            return;
                //        }
                //    }
                //}
                txtCode.Parent.BorderColor = UserCenterColor.Current.TextFrameSelectColor;
            }
            else
@@ -172,6 +197,26 @@
            }
        }
        /// <summary>
        /// 键盘事件
        /// </summary>
        /// <param name="keysCode"></param>
        private void TxtCode_KeyEvent(object sender, string keysCode)
        {
            if (keysCode == "Del")
            {
                var txtCode = (TextInputControl)sender;
                if (txtCode.Text == string.Empty)
                {
                    int index = Convert.ToInt32(txtCode.Name);
                    if (dicCodeControls.ContainsKey(index - 1) == true)
                    {
                        dicCodeControls[index - 1].Foucs = true;
                    }
                }
            }
        }
        #endregion
        #region ■ 一般方法___________________________
@@ -187,6 +232,22 @@
            }
        }
        /// <summary>
        /// 清空输入的值
        /// </summary>
        public void ClearInputValue()
        {
            foreach (var inputText in this.dicCodeControls.Values)
            {
                //先移除事件
                inputText.TextChangeEventHandler -= TxtCode_TextChangeEvent;
                //赋值
                inputText.Text = string.Empty;
                inputText.TextChangeEventHandler += TxtCode_TextChangeEvent;
            }
            dicCodeControls[0].Foucs = true;
        }
        #endregion
        #region ■ 控件摧毁___________________________