/// <summary> /// 完了タスクの表示を切り替える /// </summary> /// <param name="panel">タスクが記載されているパネルコントロール</param> /// <param name="completeTaskStyle">タスク完了時の表示方法</param> private void ChangeCompleteTaskStyle(Panel panel, TodoManager.CompleteTaskShowStyle completeTaskStyle) { // 完了タスク表示にする(要は打ち消し線を追加し、背景色を変える) foreach (Control control in panel.Controls) { if (control.Tag == null) { // tagが設定されていない場合はnullとなるので次のコントロールに変更する continue; } else if (control.Tag.ToString() == "CountDown") { control.Font = new Font("メイリオ", 9, FontStyle.Strikeout); } else if (control.Tag.ToString() == "DeadLine") { control.Font = new Font("メイリオ", 8, FontStyle.Strikeout); } else if (control.Tag.ToString() == "Contents") { control.Font = new Font("メイリオ", 9, FontStyle.Strikeout); } } // 背景色を変える panel.BackColor = DeletedBGColor; panel.Visible = (completeTaskStyle == TodoManager.CompleteTaskShowStyle.Hidden) ? false : true; }
/// <summary> /// Todoデータを作成する /// </summary> /// <param name="data">作成に必要なTodoデータ</param> /// <param name="completeTaskStyle">完了タスクの表示方法</param> /// <param name="modify">修正ボタンを押した際の挙動(フォーム部分の変更を行う受け取る)</param> /// <returns>PanelにTodoデータを載せてそれを返す</returns> public Panel Create(TodoManager.DataType data, TodoManager.CompleteTaskShowStyle completeTaskStyle, Action <string, string, string> modify) { // 修正ボタンを押した際に、このメソッドを使うとフォームの変更が行える this.modify = modify; // 何日後? Label lblCountDown = new Label(); if (data.ToBeDetermined) { lblCountDown.Text = "未定…"; } else { int countdown = (data.Deadline - DateTime.Today).Days; if (countdown == 0) { lblCountDown.ForeColor = Color.Blue; lblCountDown.Text = "本日期限"; } else if (countdown < 0) { lblCountDown.ForeColor = Color.Red; lblCountDown.Text = string.Format("{0}日遅延", Math.Abs(countdown).ToString()); } else { lblCountDown.Text = string.Format("{0}日後", countdown.ToString()); } } lblCountDown.AutoSize = true; lblCountDown.Location = new Point(5, 5); lblCountDown.Tag = "CountDown"; lblCountDown.MouseEnter += new System.EventHandler(this.Label_MouseEnter); lblCountDown.MouseLeave += new System.EventHandler(this.Label_MouseLeave); lblCountDown.Click += new System.EventHandler(this.LblTodoDeleteClick); // 修正ボタン Button btnModify = new Button(); btnModify.AutoSize = false; btnModify.BackColor = Color.FromArgb(150, 150, 150); btnModify.FlatStyle = FlatStyle.Flat; btnModify.Font = new Font("メイリオ", 8); btnModify.ForeColor = Color.White; btnModify.Location = new Point(5, 25); btnModify.Size = new Size(50, 25); //// btnModify.Tag = "ModifyButton"; // Tagは、別なところで使っているため指定したらだめ btnModify.Text = "修正"; btnModify.Visible = false; btnModify.MouseEnter += new System.EventHandler(this.Label_MouseEnter); btnModify.MouseLeave += new System.EventHandler(this.Label_MouseLeave); btnModify.Click += new EventHandler(this.BtnModify_Click); // DeadLine Label lblDeadLine = new Label(); lblDeadLine.AutoSize = true; lblDeadLine.ForeColor = Color.FromArgb(150, 150, 150); lblDeadLine.Location = new Point(635, 30); lblDeadLine.Tag = "DeadLine"; lblDeadLine.Text = data.ToBeDetermined ? string.Empty : data.Deadline.ToString("yyyy-MM-dd(ddd)"); lblDeadLine.MouseEnter += new System.EventHandler(this.Label_MouseEnter); lblDeadLine.MouseLeave += new System.EventHandler(this.Label_MouseLeave); lblDeadLine.Click += new System.EventHandler(this.LblTodoDeleteClick); // Contents Label lblContents = new Label(); lblContents.AutoSize = false; lblContents.Location = new Point(Todo.LblContentsLeft, 5); lblContents.Size = new Size(660, 40); // 555,40 lblContents.Tag = "Contents"; lblContents.Text = data.Contents; lblContents.Click += new System.EventHandler(this.LblTodoDeleteClick); lblContents.MouseEnter += new System.EventHandler(this.Label_MouseEnter); lblContents.MouseLeave += new System.EventHandler(this.Label_MouseLeave); // CreateTime Label lblCreateTime = new Label(); lblCreateTime.Text = data.CreateTime.ToString("yyyy-MM-dd"); lblCreateTime.Tag = "CreateTime"; lblCreateTime.Visible = false; // Panel Panel pnlArea = new Panel(); pnlArea.BackColor = DefaultBGColor; pnlArea.Controls.Add(lblCountDown); pnlArea.Controls.Add(lblDeadLine); pnlArea.Controls.Add(lblContents); pnlArea.Controls.Add(lblCreateTime); pnlArea.Controls.Add(btnModify); pnlArea.Size = new Size(Todo.PnlAreaWidth, 50); pnlArea.Tag = data.Id.ToString(); pnlArea.MouseEnter += new System.EventHandler(this.PnlArea_MouseEnter); pnlArea.MouseLeave += new System.EventHandler(this.PnlArea_MouseLeave); pnlArea.Click += new System.EventHandler(this.PnlTodoDeleteClick); // 完了タスクの場合は、完了タスク用のしょりを行う if (data.Deleted == 1) { this.ChangeCompleteTaskStyle(pnlArea, completeTaskStyle); } return(pnlArea); }