コード例 #1
0
ファイル: ImplementFrm.cs プロジェクト: xuanximoming/key
        public ImplementFrm(ZYSelectableElement e)
        {
            InitializeComponent();
            //MessageBox.Show("InitializeComponent()OK");
            _ele = e;
            this.labelName.Text = e.Name;

            //初始化选项
            this.listView1.Items.Clear();
            this.listView1.Columns[0].Width = this.Width - 15;

            Graphics graph = this.CreateGraphics();

            ListViewItem item = null;

            if (e.Type == ElementType.SingleElement)
            {
                this.listView1.CheckBoxes = false;
                this.checkBox1.Visible    = false;
            }
            else
            {
                this.listView1.CheckBoxes = true;
                this.checkBox1.Visible    = true;
            }

            foreach (ZYSelectableElementItem sub in e.SelectList)
            {
                item = new ListViewItem(sub.InnerValue);

                //初始化选中项
                if (e.Type == ElementType.SingleElement)
                {
                    item.Selected = sub.IsSelected;
                }
                else
                {
                    item.Checked = sub.IsSelected;
                }


                string groupName = sub.Group;
                bool   exist     = false;
                //有分组的情况
                foreach (ListViewGroup g in this.listView1.Groups)
                {
                    if (g.Name == groupName)
                    {
                        item.Group = g;
                        exist      = true;
                        break;
                    }
                }
                if (!exist)
                {
                    ListViewGroup g = new ListViewGroup(groupName, groupName);
                    this.listView1.Groups.Add(g);
                    item.Group = g;
                }

                float width = graph.MeasureString(item.Text, this.listView1.Font).Width;

                //只有在内容超过可显示的范围时,才加ToolTipText,
                if (width > this.listView1.Columns[0].Width)
                {
                    item.ToolTipText = item.Text;
                }

                this.listView1.Items.Add(item);
            }
            graph.Dispose();
            //MessageBox.Show("初始化所有选项 OK");

            //MessageBox.Show("初始化选中项OK");
            //合理化高度,使列表中不显示空白
            if (this.listView1.Items.Count > 0)
            {
                int opheight = this.listView1.Items.Count * this.listView1.Items[0].Bounds.Height + 100;

                if (opheight > this.MaximumSize.Height)
                {
                    this.listView1.Columns[0].Width = this.Width - SystemInformation.VerticalScrollBarWidth - 15;
                }
                this.Height = opheight;
            }
            else
            {
                this.Height = 100;
            }

            //合理化窗口位置

            //编辑窗口的绝对位置
            Rectangle AbsolutEditorWinRect = e.OwnerDocument.OwnerControl.ClientRectangle;

            AbsolutEditorWinRect.Location = e.OwnerDocument.OwnerControl.PointToScreen(e.OwnerDocument.OwnerControl.ClientRectangle.Location);

            //弹出窗口绝对位置
            Rectangle AbsolutHelpWinRect = this.Bounds;

            AbsolutHelpWinRect.Location = Control.MousePosition;

            //计算合理位置
            //弹出窗口没有超出编辑窗口范围
            if (AbsolutEditorWinRect.Contains(AbsolutHelpWinRect))
            {
            }
            else
            {
                int x = 0;
                int y = 0;
                //调整水平位置
                if (AbsolutHelpWinRect.Right > AbsolutEditorWinRect.Right)
                {
                    x = AbsolutEditorWinRect.Right - AbsolutHelpWinRect.Right;
                }
                //调整垂直位置
                if (AbsolutHelpWinRect.Bottom > AbsolutEditorWinRect.Bottom)
                {
                    y = -AbsolutHelpWinRect.Height;
                }

                AbsolutHelpWinRect.Offset(x, y);
            }

            Debug.WriteLine("EditorWinAbsolutRect " + AbsolutHelpWinRect);
            this.Location = AbsolutHelpWinRect.Location;

            //MessageBox.Show("ImplementFrm OK");

            this.listView1.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.listView1_ItemCheck);
        }
コード例 #2
0
ファイル: FormatFrm.cs プロジェクト: xuanximoming/key
 public FormatFrm(ZYTextBlock o, ZYSelectableElement sel, int start, int end) : this(o)
 {
     _sel   = sel;
     _start = start;
     _end   = end;
 }