Beispiel #1
0
        public void RangeSelectElement(CaptionElement element)
        {
            bool bSelectedChanged = false;

            CaptionElement 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++)
            {
                CaptionElement 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++)
            {
                CaptionElement 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++)
            {
                CaptionElement 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 #2
0
        public void SelectElement(CaptionElement element,
            bool bClearOld)
        {
            bool bSelectedChanged = false;

            if (bClearOld == true)
            {
                for (int i = 0; i < this.Elements.Count; i++)
                {
                    CaptionElement 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_language.Focus();
            }

            if (bSelectedChanged == true)
                OnSelectedIndexChanged();
        }
Beispiel #3
0
        public void ToggleSelectElement(CaptionElement element)
        {
            // 选中当前行
            if ((element.State & ElementState.Selected) == 0)
                element.State |= ElementState.Selected;
            else
                element.State -= ElementState.Selected;

            this.LastClickElement = element;

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

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

            // text
            TextBox text = line.textBox_value;
            table.Controls.Remove(text);
        }
Beispiel #5
0
        public void RemoveElement(CaptionElement line)
        {
            int index = this.Elements.IndexOf(line);

            if (index == -1)
                return;

            line.RemoveFromTable(this.tableLayoutPanel_main, index);

            this.Elements.Remove(line);
            if (this.ElementCountChanged != null)
                this.ElementCountChanged(this, new EventArgs());

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

            this.Changed = true;
        }
Beispiel #6
0
        public CaptionElement InsertNewElement(int index)
        {
            this.tableLayoutPanel_main.RowCount += 1;
            this.tableLayoutPanel_main.RowStyles.Insert(index + 1, new System.Windows.Forms.RowStyle());

            CaptionElement line = new CaptionElement(this);

            line.InsertToTable(this.tableLayoutPanel_main, index);

            this.Elements.Insert(index, line);
            if (this.ElementCountChanged != null)
                this.ElementCountChanged(this, new EventArgs());

            line.State = ElementState.New;

            SelectElement(line, true);  // 2008/6/10

            return line;
        }
Beispiel #7
0
        public CaptionElement AppendNewElement()
        {
            this.tableLayoutPanel_main.RowCount += 1;
            this.tableLayoutPanel_main.RowStyles.Add(new System.Windows.Forms.RowStyle());

            CaptionElement line = new CaptionElement(this);

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

            this.Elements.Add(line);
            if (this.ElementCountChanged != null)
                this.ElementCountChanged(this, new EventArgs());

            return line;
        }
Beispiel #8
0
        int SetXml(string strXml,
            out string strError)
        {
            strError = "";

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

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

            XmlDocument dom = new XmlDocument();
            dom.LoadXml("<root />");

            XmlDocumentFragment fragment = dom.CreateDocumentFragment();
            try
            {
                fragment.InnerXml = strXml;
            }
            catch (Exception ex)
            {
                strError = "fragment XML装入XmlDocumentFragment时出错: " + ex.Message;
                return -1;
            }

            dom.DocumentElement.AppendChild(fragment);

            XmlNodeList nodes = dom.DocumentElement.SelectNodes("caption");

            this.DisableUpdate();

            try
            {

                for (int i = 0; i < nodes.Count; i++)
                {
                    XmlNode node = nodes[i];

                    CaptionElement element = this.AppendNewElement();

                    element.Language = DomUtil.GetAttr(node, "lang");
                    element.Value = node.InnerText;
                }


                this.Changed = false;
            }
            finally
            {
                this.EnableUpdate();
            }

            return 0;
        }