Beispiel #1
0
        // 清除一个DcElement对象对应的Control
        public void ClearOneElementControls(
            TableLayoutPanel table,
            DcElement line)
        {
            // color
            Label label = line.label_color;
            table.Controls.Remove(label);

            // element
            ComboBox element_combo = line.comboBox_element;
            table.Controls.Remove(element_combo);

            // scheme
            ComboBox scheme = line.comboBox_scheme;
            table.Controls.Remove(scheme);

            // language
            ComboBox language = line.comboBox_language;
            table.Controls.Remove(language);

            // text
            TextBox text = line.textBox_value;
            table.Controls.Remove(text);
        }
Beispiel #2
0
        public int SetXml(string strXml,
            out string strError)
        {
            strError = "";

            // clear lines原有内容
            this.Clear();
            this.DataDom = null;
            this.DataRoot = null;
            this.DcNodes = null;
            this.LastClickElement = null;
            this.XmlNamespaceManager = null;

            if (String.IsNullOrEmpty(strXml) == true)
                return 0;

            this.DataDom = new XmlDocument();
            try
            {
                this.DataDom.LoadXml(strXml);
            }
            catch (Exception ex)
            {
                strError = "XML数据装入DOM时发生错误: " + ex.Message;
                return -1;
            }

            return this.SetXml(this.DataDom, out strError);
        }
Beispiel #3
0
        public void ToggleSelectElement(DcElement element)
        {
            // 选中当前行
            if ((element.State & ElementState.Selected) == 0)
                element.State |= ElementState.Selected;
            else
                element.State -= ElementState.Selected;

            this.LastClickElement = element;

            this.OnSelectedIndexChanged();
        }
Beispiel #4
0
        public void RangeSelectElement(DcElement element)
        {
            bool bSelectedChanged = false;

            DcElement start = this.LastClickElement;

            int nStart = this.Elements.IndexOf(start);
            if (nStart == -1)
                return;

            int nEnd = this.Elements.IndexOf(element);

            if (nStart > nEnd)
            {
                // 交换
                int nTemp = nStart;
                nStart = nEnd;
                nEnd = nTemp;
            }

            for (int i = nStart; i <= nEnd; i++)
            {
                DcElement cur_element = this.Elements[i];

                if ((cur_element.State & ElementState.Selected) == 0)
                {
                    cur_element.State |= ElementState.Selected;
                    bSelectedChanged = true;
                }
            }

            // 清除其余位置
            for (int i = 0; i < nStart; i++)
            {
                DcElement cur_element = this.Elements[i];

                if ((cur_element.State & ElementState.Selected) != 0)
                {
                    cur_element.State -= ElementState.Selected;
                    bSelectedChanged = true;
                }
            }

            for (int i = nEnd + 1; i < this.Elements.Count; i++)
            {
                DcElement cur_element = this.Elements[i];

                if ((cur_element.State & ElementState.Selected) != 0)
                {
                    cur_element.State -= ElementState.Selected;
                    bSelectedChanged = true;
                }
            }

            if (bSelectedChanged == true)
                this.OnSelectedIndexChanged();
        }
Beispiel #5
0
        public void SelectElement(DcElement element,
            bool bClearOld)
        {
            bool bSelectedChanged = false;

            if (bClearOld == true)
            {
                for (int i = 0; i < this.Elements.Count; i++)
                {
                    DcElement cur_element = this.Elements[i];

                    if (cur_element == element)
                        continue;   // 暂时不处理当前行

                    if ((cur_element.State & ElementState.Selected) != 0)
                    {
                        cur_element.State -= ElementState.Selected;
                        bSelectedChanged = true;
                    }
                }
            }

            // 选中当前行
            if ((element.State & ElementState.Selected) == 0)
            {
                element.State |= ElementState.Selected;
                bSelectedChanged = true;
            }

            this.LastClickElement = element;

            if (bClearOld == true)
            {
                // 看看focus是不是已经在这一行上?
                // 如果不在,则要切换过来
                if (element.IsSubControlFocused() == false)
                    element.comboBox_element.Focus();
            }

            if (bSelectedChanged == true)
                OnSelectedIndexChanged();
        }
Beispiel #6
0
        public void RemoveElement(DcElement line)
        {
            int index = this.Elements.IndexOf(line);

            if (index == -1)
                return;

            line.RemoveFromTable(this.tableLayoutPanel_main, index);

            this.Elements.Remove(line);

            if (this.LastClickElement == line)
                this.LastClickElement = null;

            this.Changed = true;
        }
Beispiel #7
0
        public void RemoveElement(int index)
        {
            DcElement line = this.Elements[index];

            line.RemoveFromTable(this.tableLayoutPanel_main, index);

            this.Elements.Remove(line);

            if (this.LastClickElement == line)
                this.LastClickElement = null;

            this.Changed = true;
        }
Beispiel #8
0
        public DcElement InsertNewElement(int index)
        {
            this.DisableUpdate();   // 防止闪动。彻底解决问题。2009/10/13 

            try
            {
                this.tableLayoutPanel_main.RowCount += 1;
                this.tableLayoutPanel_main.RowStyles.Insert(index + 1, new System.Windows.Forms.RowStyle());

                DcElement line = new DcElement(this);

                line.InsertToTable(this.tableLayoutPanel_main, index);

                this.Elements.Insert(index, line);

                line.State = ElementState.New;

                return line;
            }
            finally
            {
                this.EnableUpdate();
            }
        }
Beispiel #9
0
        public DcElement AppendNewElement()
        {
            this.DisableUpdate();   // 防止闪动。彻底解决问题。2009/10/13 

            try
            {
                // int nLastRow = this.tableLayoutPanel_main.RowCount;

                this.tableLayoutPanel_main.RowCount += 1;
                this.tableLayoutPanel_main.RowStyles.Add(new System.Windows.Forms.RowStyle());

                DcElement line = new DcElement(this);

                line.AddToTable(this.tableLayoutPanel_main, this.Elements.Count + 1);

                this.Elements.Add(line);

                return line;
            }
            finally
            {
                this.EnableUpdate();
            }
        }