HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2020-09-18 c7df85937f73fb347ee0b19e9c052d2d00a6df6c
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 = 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;
@@ -107,7 +115,25 @@
            }
            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;
#if Android
                txtCode.SetSelectionEnd();
#endif
            }
            else
            {
@@ -132,6 +158,10 @@
            if (textValue.Length == this.CodeLenth)
            {
                dicCodeControls[this.CodeLenth - 1].Foucs = true;
#if Android
                //光标至于最后
                dicCodeControls[this.CodeLenth - 1].SetSelectionEnd();
#endif
                for (int i = 0; i < this.CodeLenth; i++)
                {
                    //先移除事件
@@ -160,9 +190,17 @@
                if (dicCodeControls.ContainsKey(index + 1) == true)
                {
                    dicCodeControls[index + 1].Foucs = true;
#if Android
                    //光标至于最后
                    dicCodeControls[index + 1].SetSelectionEnd();
#endif
                }
                else
                {
#if Android
                    //光标至于最后
                    txtCode.SetSelectionEnd();
#endif
                    //最后一位输入完成,校验验证码
                    string code = string.Empty;
                    for (int i = 0; i < this.CodeLenth; i++)
@@ -189,6 +227,10 @@
                    if (dicCodeControls.ContainsKey(index - 1) == true)
                    {
                        dicCodeControls[index - 1].Foucs = true;
#if Android
                        //光标至于最后
                        dicCodeControls[index - 1].SetSelectionEnd();
#endif
                    }
                }
            }
@@ -209,6 +251,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 ■ 控件摧毁___________________________