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); }
public FormatFrm(ZYTextBlock o, ZYSelectableElement sel, int start, int end) : this(o) { _sel = sel; _start = start; _end = end; }