Пример #1
0
        public void RangeSelectElement(FromElement element)
        {
            bool bSelectedChanged = false;

            FromElement 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++)
            {
                FromElement 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++)
            {
                FromElement 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++)
            {
                FromElement cur_element = this.Elements[i];

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

            if (bSelectedChanged == true)
                this.OnSelectedIndexChanged();
        }
Пример #2
0
        public void SelectElement(FromElement element,
            bool bClearOld)
        {
            bool bSelectedChanged = false;

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

            if (bSelectedChanged == true)
                OnSelectedIndexChanged();
        }
Пример #3
0
        public void ToggleSelectElement(FromElement element)
        {
            // 选中当前行
            if ((element.State & ElementState.Selected) == 0)
                element.State |= ElementState.Selected;
            else
                element.State -= ElementState.Selected;

            this.LastClickElement = element;

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

            // style
            TextBox style = line.textBox_style;
            table.Controls.Remove(style);

            // captions
            CaptionEditControl captions = line.captions;
            table.Controls.Remove(captions);

        }
Пример #5
0
        public void ClearAllSelect()
        {
            bool bSelectedChanged = false;

            for (int i = 0; i < this.Elements.Count; i++)
            {
                FromElement cur_element = this.Elements[i];
                if ((cur_element.State & ElementState.Selected) != 0)
                {
                    cur_element.State -= ElementState.Selected;
                    bSelectedChanged = true;
                }
            }

            this.LastClickElement = null;

            if (bSelectedChanged == true)
                this.OnSelectedIndexChanged();
        }
Пример #6
0
        public void RemoveElement(FromElement 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;
        }
Пример #7
0
        public void RemoveElement(int index)
        {
            FromElement line = this.Elements[index];

            line.RemoveFromTable(this.tableLayoutPanel_main, index);

            this.Elements.Remove(line);

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

            this.Changed = true;
        }
Пример #8
0
        public FromElement InsertNewElement(int index)
        {
            this.tableLayoutPanel_main.RowCount += 1;
            this.tableLayoutPanel_main.RowStyles.Insert(index + 1, new System.Windows.Forms.RowStyle());

            FromElement line = new FromElement(this);

            line.InsertToTable(this.tableLayoutPanel_main, index);

            this.Elements.Insert(index, line);

            line.State = ElementState.New;

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

            return line;
        }
Пример #9
0
        public FromElement AppendNewElement()
        {
            this.tableLayoutPanel_main.RowCount += 1;
            this.tableLayoutPanel_main.RowStyles.Add(new System.Windows.Forms.RowStyle());

            FromElement line = new FromElement(this);

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

            this.Elements.Add(line);

            return line;
        }
Пример #10
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("from");

            this.DisableUpdate();

            try
            {

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

                    FromElement element = this.AppendNewElement();

                    element.Style = DomUtil.GetAttr(node, "style");
                    try
                    {
                        element.CaptionsXml = node.InnerXml;
                    }
                    catch (Exception ex)
                    {
                        strError = "set element CaptionXml error: " + ex.Message;
                        return -1;
                    }
                }

                this.SetElementsHeight();

            }
            finally
            {
                this.EnableUpdate();
            }

            return 0;
        }