0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIに頼り切ってタスクアプリを追加開発する。:WBS画面機能追加

0
Last updated at Posted at 2026-05-21

前回までの概要

前前回まででタスク管理アプリの大枠作成、ブラッシュアップをしました。
今回はWBS画面の内容見直し、ブラッシュアップを行います。

プロンプト

WBS画面に担当者のフィルタ機能を実装したい

回答

実装方針

WBS画面へ:

担当者フィルタ

を追加します。


実現内容

機能 内容
担当者選択 ComboBox
全件表示 「すべて」
自動絞込 SelectionChange
WBS再描画 Filter反映
子タスク対応 親表示維持可能

修正対象

ファイル 内容
WbsForm.Designer.cs ComboBox追加
WbsForm.cs Filter実装
MasterService.cs 既存利用

1. WbsForm.Designer.cs 修正


フィールド追加

private Label lblAssigneeFilter;

private ComboBox cmbAssigneeFilter;

InitializeComponent() 追加


ラベル

lblAssigneeFilter =
    new Label();

lblAssigneeFilter.Text =
    "担当者";

lblAssigneeFilter.Location =
    new Point(20, 15);

lblAssigneeFilter.AutoSize = true;

ComboBox

cmbAssigneeFilter =
    new ComboBox();

cmbAssigneeFilter.Location =
    new Point(80, 10);

cmbAssigneeFilter.Width = 180;

cmbAssigneeFilter.DropDownStyle =
    ComboBoxStyle.DropDownList;

Controls追加

Controls.Add(lblAssigneeFilter);

Controls.Add(cmbAssigneeFilter);

DataGrid位置調整

フィルタ分下げる。


修正前

dgvWbs.Location =
    new Point(0, 0);

修正後

dgvWbs.Location =
    new Point(0, 40);

高さ調整

dgvWbs.Height =
    ClientSize.Height - 40;

2. WbsForm.cs 修正


using追加

using TaskManager.Services;

フィールド追加

private readonly
    MasterService _masterService =
        new();

private string _selectedAssignee =
    "すべて";

コンストラクタ修正


追加

LoadAssigneeFilter();

cmbAssigneeFilter.SelectedIndexChanged +=
    cmbAssigneeFilter_SelectedIndexChanged;

3. 担当者フィルタロード追加


メソッド追加

private void LoadAssigneeFilter()
{
    cmbAssigneeFilter.Items.Clear();

    cmbAssigneeFilter.Items.Add("すべて");

    var master =
        _masterService.Load();

    foreach (var assignee
        in master.Assignees)
    {
        cmbAssigneeFilter.Items.Add(
            assignee);
    }

    cmbAssigneeFilter.SelectedIndex = 0;
}

4. フィルタ変更イベント追加


メソッド追加

private void cmbAssigneeFilter_SelectedIndexChanged(
    object? sender,
    EventArgs e)
{
    _selectedAssignee =
        cmbAssigneeFilter.SelectedItem?
            .ToString()
        ?? "すべて";

    LoadWbs();
}

5. LoadWbs() 修正

超重要。


修正前

var rows =
    _wbsService.CreateRows(tasks);

修正後

var rows =
    _wbsService.CreateRows(tasks);

if (_selectedAssignee
    != "すべて")
{
    rows = rows
        .Where(x =>
            x.Assignee ==
            _selectedAssignee)
        .ToList();
}

実装、起動確認

実際に実装、動かしてみるとこうなります。
image.png

まとめ

WBSの実用化も一旦完了かと思います。
次回はWBSカラム設定画面を修正していきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?