コード例 #1
0
        public void InitJobs(IEnumerable <BatchJob> jobs, IPropertyEditableObjectEditor editor, Action <BatchJob> scheduleJob)
        {
            _editor      = editor;
            _scheduleJob = scheduleJob;

            var groups = jobs.GroupBy(p => p.Group, q => q, (group, code) => group).ToList();

            foreach (string group in groups)
            {
                TreeNode groupNode = new TreeNode(group);
                groupNode.Tag = new ListViewItem(new string[] { "", group });

                var groupJobs = jobs.Where(p => p.Group == group).OrderBy(p => p.Name).ToList();

                foreach (var groupJob in groupJobs)
                {
                    TreeNode node = new TreeNode(groupJob.Name);
                    var      task = new TasklistViewItem(groupJob);
                    task.Tag = node; //use to give a reference for updating the treenode
                    node.Tag = task;
                    groupNode.Nodes.Add(node);
                }


                this.TreeView.Nodes.Add(groupNode);
            }
        }
コード例 #2
0
        private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
        {
            e.DrawDefault = true;

            Rectangle rect = e.Bounds;

            if ((e.State & TreeNodeStates.Selected) != 0)
            {
                if ((e.State & TreeNodeStates.Focused) != 0)
                {
                    e.Graphics.FillRectangle(SystemBrushes.Highlight, rect);
                }
                else
                {
                    e.Graphics.FillRectangle(SystemBrushes.Control, rect);
                }
            }
            else
            {
                e.Graphics.FillRectangle(Brushes.White, rect);
            }

            e.Graphics.DrawRectangle(SystemPens.Control, rect);

            for (int intColumn = 1; intColumn < this.listView1.Columns.Count; intColumn++)
            {
                rect.Offset(this.listView1.Columns[intColumn - 1].Width, 0);
                rect.Width = this.listView1.Columns[intColumn].Width;

                e.Graphics.DrawRectangle(SystemPens.Control, rect);

                string           strColumnText;
                ListViewItem     list     = e.Node.Tag as ListViewItem;
                TasklistViewItem tasklist = list as TasklistViewItem;

                if (list.SubItems.Count > 2)
                {
                    strColumnText = list.SubItems[intColumn + 1].Text;
                }
                else if (intColumn < 2 && list.SubItems.Count <= 2)
                {
                    strColumnText = list.SubItems[intColumn].Text;
                }
                else
                {
                    strColumnText = string.Empty;// intColumn + " " + e.Node.Text; // dummy
                }
                TextFormatFlags flags = TextFormatFlags.EndEllipsis | TextFormatFlags.Left;
                //switch(this.listView1.Columns[intColumn].TextAlign)
                //{
                //    case HorizontalAlignment.Center:
                //        flags |= TextFormatFlags.HorizontalCenter;
                //        break;
                //    case HorizontalAlignment.Left:
                //        flags |= TextFormatFlags.Left;
                //        break;
                //    case HorizontalAlignment.Right:
                //        flags |= TextFormatFlags.Right;
                //        break;
                //    default:
                //        break;
                //}

                if (intColumn == 3 && tasklist != null)
                {
                    ProgressBarRenderer.DrawHorizontalBar(e.Graphics, rect);
                    int       width = (int)((double)tasklist.CurrentOp / (double)tasklist.TotalOps * (double)rect.Size.Width);
                    Rectangle prect = new Rectangle(rect.Location, new Size(width, rect.Size.Height));
                    ProgressBarRenderer.DrawHorizontalChunks(e.Graphics, prect);
                }
                else
                {
                    rect.Y++;
                    if ((e.State & TreeNodeStates.Selected) != 0 &&
                        (e.State & TreeNodeStates.Focused) != 0)
                    {
                        TextRenderer.DrawText(e.Graphics, strColumnText, e.Node.NodeFont, rect, SystemColors.HighlightText, flags);
                    }
                    else
                    {
                        TextRenderer.DrawText(e.Graphics, strColumnText, e.Node.NodeFont, rect, e.Node.ForeColor, e.Node.BackColor, flags);
                    }
                    rect.Y--;
                }
            }
        }