1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
using System;
using System.Collections.Generic;
using System.Text;
 
namespace Shared.Phone.UserCenter
{
    /// <summary>
    /// 做成一个用来编辑名字的行控件(分上下两部分)
    /// </summary>
    public class EditorNameValueRow : StatuRowLayout
    {
        /// <summary>
        /// 名称变更事件
        /// </summary>
        public delegate void _ActionNameChangedEvent(string nameValue);
        /// <summary>
        /// 称变更事件
        /// </summary>
        public _ActionNameChangedEvent ActionNameChangedEvent;
        /// <summary>
        /// 上段控件(caption)
        /// </summary>
        public RowTopGrayView btnTop = null;
        /// <summary>
        /// 下段控件(nameValue)
        /// </summary>
        public RowBottomBlackView btnName = null;
        /// <summary>
        /// 弹窗的标题信息
        /// </summary>
        private string dialogTitle = string.Empty;
        /// <summary>
        /// 当弹窗的输入框为空时,显示的提示信息
        /// </summary>
        private string nameTip = string.Empty;
 
        /// <summary>
        /// 做成一个用来编辑名字的行控件(分上下两部分)
        /// </summary>
        /// <param name="caption">上段标题信息</param>
        /// <param name="nameValue">名称值</param>
        /// <param name="hadPictrue">是否拥有图片在左边</param>
        public EditorNameValueRow(string caption, string nameValue, bool hadPictrue = false)
        {
            btnTop = new RowTopGrayView(hadPictrue);
            btnTop.Text = caption;
 
            btnName = new RowBottomBlackView(hadPictrue);
            btnName.Text = nameValue;
 
            string oldValue = nameValue;
            this.MouseUpEvent += (sender, e) =>
            {
                //获取当前正在激活的画面
                UserCenterCommonForm nowform = UserCenterLogic.GetNowActionForm();
                if (nowform == null)
                {
                    //这种情况应该不存在
                    return;
                }
                //弹窗界面
                var form = new DialogInputFrameControl(nowform, DialogFrameMode.OnlyInput);
                form.InputText = this.btnName.Text;
                form.SetTipText(this.nameTip);
                form.SetTitleText(this.dialogTitle);
                form.ComfirmClickEvent += () =>
                {
                    //没有回调函数
                    if (ActionNameChangedEvent == null)
                    {
                        form.CloseDialog();
                        return;
                    }
 
                    string value = form.InputText.Trim();
                    if (value == string.Empty)
                    {
                        //请输入XXXX
                        var contr = new ErrorMsgControl(nameTip);
                        contr.Show();
                        return;
                    }
                    //值没有改变的话,则不处理
                    if (value == oldValue)
                    {
                        form.CloseDialog();
                        return;
                    }
                    oldValue = value;
                    btnName.Text = value;
 
                    form.CloseDialog();
                    //调用回调函数
                    this.ActionNameChangedEvent(value);
                };
            };
        }
 
        /// <summary>
        /// 初始化控件
        /// </summary>
        /// <param name="XXValue">X轴偏移量</param>
        public void InitControl(int XXValue = -1)
        {
            this.AddChidren(btnTop);
 
            this.AddChidren(btnName);
 
            var right = this.AddRightIconControl();
 
            if (XXValue != -1)
            {
                btnTop.X += XXValue;
                btnName.X += XXValue;
                right.X += XXValue;
            }
        }
 
        /// <summary>
        ///  设置弹窗的标题信息
        /// </summary>
        /// <param name="i_dialogTitle"></param>
        public void SetDialogTitle(string i_dialogTitle)
        {
            this.dialogTitle = i_dialogTitle;
        }
 
        /// <summary>
        /// 当弹窗的输入框为空时,显示的提示信息
        /// </summary>
        /// <param name="i_nameTip"></param>
        public void SetEmptyNameTip(string i_nameTip)
        {
            this.nameTip = i_nameTip;
        }
    }
}