tzy
2021-05-30 1c63243a7bcc330b7293cc8d5ec81c4c52018196
HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs
@@ -7,7 +7,7 @@
namespace HDL_ON.Stan
{
    /// <summary>
    /// 底部时间选择控件
    /// 底部时间选择控件(时和分),不需要加到父控件
    /// </summary>
    public class BottomTimeSelectControl : BottomDialogCommon
    {
@@ -17,13 +17,33 @@
        /// 结束事件(0:点击了取消  1:点击了确定,第二,三参数为时和分)
        /// </summary>
        public Action<int, int, int> FinishEvent = null;
        /// <summary>
        /// 小时取值范围
        /// </summary>
        List<int> hRange = new List<int>();
        /// <summary>
        /// 分钟取值范围
        /// </summary>
        List<int> mRange = new List<int>();
        /// <summary>
        /// 时间控件
        /// </summary>
        UIPickerView pickerView;
        //选择的时与分
        int selectHour = 0;
        int selectMinute = 0;
        //XX时
        List<string> listHour;
        //XX分
        List<string> listMinute;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 底部时间选择控件
        /// 底部时间选择控件(时和分),不需要加到父控件
        /// </summary>
        /// <param name="i_title">标题</param>
        /// <param name="clickBackClose">点击背景时,是否关闭弹窗</param>
@@ -31,6 +51,34 @@
        {
            base.ClickBackClose = clickBackClose;
            base.StrTitle = i_title;
            base.RowCount = 5;
            for (int i = 0; i <= 23; i++)
            {
                hRange.Add(i);
            }
            for (int i = 0; i <= 59; i++)
            {
                mRange.Add(i);
            }
        }
        /// <summary>
        /// 底部时间选择控件(时和分),不需要加到父控件
        /// </summary>
        /// <param name="i_title">标题</param>
        /// <param name="clickBackClose">点击背景时,是否关闭弹窗</param>
        public BottomTimeSelectControl(List<int> hoursRange, List<int> minuteRange, int rowCount, string i_title = "", bool clickBackClose = true)
        {
            base.ClickBackClose = clickBackClose;
            base.StrTitle = i_title;
            hRange = hoursRange;
            mRange = minuteRange;
            base.RowCount = rowCount;
        }
        /// <summary>
@@ -38,19 +86,22 @@
        /// </summary>
        /// <param name="i_hour">默认选择时</param>
        /// <param name="i_minute">默认选择分</param>
        public void InitControl(int i_hour, int i_minute)
        /// <param name="contentView">选择区域高度</param>
        public void InitControl(int i_hour, int i_minute,int contentView = 297,bool isHour = true)
        {
            //已经初始化
            if (base.btnCancel != null) { return; }
            this.selectHour = i_hour;
            this.selectMinute = i_minute;
            //初始化底层控件
            var frameWhiteBack = base.InitBaseControl();
            frameWhiteBack.Height = Application.GetRealHeight(297);
            frameWhiteBack.Y = frameWhiteBack.Parent.Height - Application.GetRealHeight(297 + 20);
            //选择的时与分
            int selectHour = 0;
            int selectMinute = 0;
            if (contentView != -1)
            {
                frameWhiteBack.Height = Application.GetRealHeight(contentView);
            }
            //frameWhiteBack.Y = frameWhiteBack.Parent.Height - Application.GetRealHeight(297 + 20);
            //取消
            base.btnCancel.ButtonClickEvent += (sender, e) =>
@@ -63,7 +114,7 @@
            base.btnConfirm.ButtonClickEvent += (sender, e) =>
            {
                //有选择了才能点确认
                if (selectHour != 0 || selectMinute != 0)
                //if (selectHour != 0 || selectMinute != 0)
                {
                    base.Close();
                    this.FinishEvent?.Invoke(1, selectHour, selectMinute);
@@ -78,22 +129,31 @@
            frameWhiteBack.AddChidren(btnLine);
            //时间控件
            var pickerView = new UIPickerView();
            pickerView = new UIPickerView();
            //时
            var strhour = Language.StringByID(StringId.h);
            var strhour = HdlCommonLogic.Current.GetHourText();
            //分
            var strMinute = Language.StringByID(StringId.m);
            //XX时
            var listHour = new List<string> { "00" + strhour };
            //XX分
            var listMinute = new List<string> { "00" + strMinute };
            for (int i = 1; i <= 23; i++)
            var strMinute = HdlCommonLogic.Current.GetMinuteText();
            if(!isHour)
            {
                listHour.Add(i.ToString().PadLeft(2, '0') + strhour);
                strhour = Language.StringByID(StringId.m);
                strMinute = Language.StringByID(StringId.s);
            }
            for (int i = 1; i <= 58; i++)
            //XX时
            listHour = new List<string>();// { "00" + strhour };
            //XX分
            listMinute = new List<string>();// { "00" + strMinute };
            //for (int i = 1; i <= 23; i++)
            foreach (var hItem in hRange)
            {
                listMinute.Add(i.ToString().PadLeft(2, '0') + strMinute);
                listHour.Add(hItem.ToString().PadLeft(2, '0') + strhour);
            }
            //for (int i = 1; i <= 59; i++)
            foreach (var mItem in mRange)
            {
                listMinute.Add(mItem.ToString().PadLeft(2, '0') + strMinute);
            }
            pickerView.Height = frameWhiteBack.Height - btnLine.Bottom;
            pickerView.Width = frameWhiteBack.Width - Application.GetRealWidth(8) * 2;
@@ -117,6 +177,57 @@
            };
        }
        /// <summary>
        /// 特殊的集合选择事件,凉霸时间设置使用
        /// </summary>
        public void ChangePickerEvent()
        {
            pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
            {
                if (value1 == 0 && value2 == 0)
                {
                    value2 = 1;
                    pickerView.setCurrentItems(value1, value2, 0);
                }
                else if (value1 == 4 && value2 == 1)
                {
                    value2 = 0;
                    pickerView.setCurrentItems(value1, value2, 0);
                }
                else
                {
                    //更改索引
                    selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
                    selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
                }
            };
        }
        /// <summary>
        /// 特殊的集合选择事件,场景时间设置使用
        /// </summary>
        public void ChangePickerEvent2()
        {
            pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
            {
                if (value1 == 60 && value2 == 60)
                {
                    value2 = 0;
                    pickerView.setCurrentItems(value1, value2, 0);
                }
                //else if (value1 == 4 && value2 == 1)
                //{
                //    value2 = 0;
                //    pickerView.setCurrentItems(value1, value2, 0);
                //}
                //else
                //{
                //    //更改索引
                //    selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
                //    selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
                //}
            };
        }
        #endregion
        #region ■ 一般方法___________________________