From c7df85937f73fb347ee0b19e9c052d2d00a6df6c Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期五, 18 九月 2020 13:58:19 +0800 Subject: [PATCH] 新版本 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/TextInputBase.cs | 67 +++++++++++++++++++++++++++------ 1 files changed, 54 insertions(+), 13 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/TextInputBase.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/TextInputBase.cs index c4572c8..58b1f8c 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/TextInputBase.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/TextInputBase.cs @@ -45,13 +45,31 @@ /// </summary> public Action FinishInputEvent = null; /// <summary> - /// 鏈�澶ц緭鍏ラ暱搴�(鐩墠鍙拡瀵规寜涓嬪洖杞﹂敭鏃惰繘琛屾娴�,瓒呰繃鏃�,涓嶄細璋冪敤FinishInputEvent) + /// 鍊兼敼鍙樹簨浠�(鍙桵axByte灞炴�ч檺鍒�) /// </summary> - public int MaxByte = 0; + public Action<string> TextChangedEvent = null; /// <summary> /// 鎸囧畾璇ヨ緭鍏ユ鏄惁涓轰笉鍙渷鐣�(榛樿涓篺alse) /// </summary> public bool MustInput = false; + + private int m_MaxByte = -1; + /// <summary> + /// 鏈�澶ц緭鍏yte闀垮害 + /// </summary> + public int MaxByte + { + get { return m_MaxByte; } + set + { + m_MaxByte = value; + this.TextChangeEventHandler -= this.TxtCode_TextChangedEvent; + if (m_MaxByte > 0) + { + this.TextChangeEventHandler += this.TxtCode_TextChangedEvent; + } + } + } private bool m_UseFocusColor = false; /// <summary> @@ -236,6 +254,39 @@ this.FinishInputEvent?.Invoke(); } + /// <summary> + /// 鍊兼敼鍙樹簨浠� + /// </summary> + /// <param name="sender"></param> + /// <param name="value"></param> + private void TxtCode_TextChangedEvent(object sender, string value) + { + var byteData = Encoding.UTF8.GetBytes(value); + var newValue = value; + + //濡傛灉杈撳叆鐨勫��,宸茬粡澶т簬鎸囧畾鐨刡yte鏁�,鍒欐埅鍙� + if (byteData.Length > this.m_MaxByte) + { + //鎴彇鎸囧畾鐨刡yte瀛楄妭 + newValue = Encoding.UTF8.GetString(byteData, 0, this.m_MaxByte); + //鏈�鍚庝竴浣嶄笉瑕�,鍥犱负鎴彇鐨勬渶鍚庝竴浣嶅彲鑳芥槸涔辩爜 + newValue = newValue.Substring(0, newValue.Length - 1); + //鎷兼帴涓婂畠鐨勪笅涓�浣�,鐒跺悗妫�娴� + var checkValue = newValue + value[newValue.Length]; + if (Encoding.UTF8.GetBytes(checkValue).Length <= this.m_MaxByte) + { + //姝eソ鍖归厤byte鏁� + newValue = checkValue; + } + this.Text = newValue; + //灏嗗厜鏍囪嚦浜庢渶鍚� +#if Android + this.SetSelectionEnd(); +#endif + } + this.TextChangedEvent?.Invoke(newValue); + } + #endregion #region 鈻� 妫�娴嬮敊璇痏__________________________ @@ -287,17 +338,6 @@ /// <returns></returns> private string CheckMaxByte() { - if (this.MaxByte != 0) - { - if (Encoding.UTF8.GetBytes(this.Text.Trim()).Length > this.MaxByte) - { - //杈撳叆鍐呭杩囬暱,鏈�澶0}瀛楄妭 - string msg = Language.StringByID(R.MyInternationalizationString.uInputContentIsOverLengthMsg); - msg.Replace("{0}", this.MaxByte.ToString()); - - return msg; - } - } return null; } @@ -321,6 +361,7 @@ public override void RemoveFromParent() { this.FinishInputEvent = null; + this.TextChangedEvent = null; if (this.Parent != null) { base.RemoveFromParent(); -- Gitblit v1.8.0