카테고리 이름 초기화
우선 초기 이름이 Empty인 것은 조금 아쉬우니 개수만큼 번호를 매기도록 해보자.
namespace AppleSheet.menuCategoryEdit
{
public partial class objCategory : UserControl
{
private string _name = string.Empty;
public objCategory(string name)
{
InitializeComponent();
_name = name;
lbName.Text = _name;
}
}
}
먼저 생성시 매개변수로 이름을 받아주자.
private void btnAddNewCategory_Click(object sender, EventArgs e)
{
objCategory newCategory = new objCategory("새 카테고리" + pnlCategories.Controls.Count);
newCategory.Location = new Point(0, pnlCategories.Height);
pnlCategories.Controls.Add(newCategory);
pnlCategories.Size = new Size(pnlCategories.Size.Width, pnlCategories.Height + newCategory.Height);
}
그다음 현재 카테고리 판에 들어가 있는 개수를 판단해서 숫자를 입력해 주면,
분명히 부자연스러운 부분이 생길 수밖에 없다. 하지만 일단 넘어가주자.
각 버튼의 기능 넣기
우선 Tree를 확장하거나 드래그 앤 드롭으로 카테고리를 옮기는 기능은 나중에 생각하고, 추가/수정/제거부터 시작해 보자.
사실 추가/수정/제거는 데이터를 관리하는데 가장 기본이긴 하다.
아무튼 각 기능을 설명해 보자면 다음과 같다.
추가 : 하위 카테고리를 1개 추가한다.
- 곧바로 추가되면 된다.
- 상위 카테고리의 이름을 가져간다.
- 하위 카테고리는 해당 기능을 수행할 수 없다.
수정 : 해당 카테고리의 이름을 변경한다.
- 카테고리의 이름을 바꾼다.
- 해당 기능 수행 시 Label을 TextBox로 바꾸고 엔터를 치면 종료한다.
- 중복된 이름 발생 시 변경하지 않고 메시지를 띄운다.
제거 : 해당 카테고리를 제거한다.
- 카테고리 제거 시 경고 메시지를 띄운다.
- 상위 카테고리는 하위 카테고리가 있다면, 제거할 수 없다.
- 카테고리를 제거하면, 실제로 다룰 데이터는 소속된 카테고리를 잃어버린다.
- 보이지 않는 곳에 빈 카테고리를 넣어두고 카테고리 제거 시 다음 중 하나의 동작을 한다.
- 카테고리 내 데이터를 일괄적으로 특정 카테고리로 옮긴다.
- 카테고리 내 데이터를 일괄적으로 빈 카테고리로 옮긴다.
- 카테고리 내 데이터를 일괄적으로 제거한다.
우선 다음과 같이 간략하게 기능 명세를 만들어두고 진행하자.
추가 버튼의 기능을 만들어보자.
추가 버튼을 누르면, 하위 카테고리가 추가되며 하위카테고리일 경우 추가 버튼을 보이지 않게 해야 한다.
여기서 주요한 부분은 backgroundworker를 이용해 panel에 그림을 다시 그리는 부분이다.
언제나 그림 그리는 것이 제일 어렵다.
private void _drawWorker_DoWork(object sender, DoWorkEventArgs e)
{
pnlCategories.Invoke(new Action(() =>
{
int pnlHeight = 0;
foreach (objCategory obj in _categories)
{
obj.Location = new Point(0, pnlHeight);
pnlHeight += obj.Height;
}
pnlCategories.Height = pnlHeight;
}));
}
이렇게 첫 번째 추가 버튼의 동작은 무사히 구현하였다.
수정 버튼 기능을 만들어보자.
수정은 단순히 이름을 수정하는 것이다.
그러면 현재 label 컴포넌트가 수정이 가능해야한다.
가장 심플한 방법은 TextBox를 미리 가지고있다가 수정 버튼을 눌렀을 때, Label위에 보이게 하고, 포커스를 넘겨주는 것이다.
그 후 엔터를 친다면, 수정을 종료하는 것이다.
이렇게 이름을 바꿀 수 있게 되면...
아래와 같이 바꿀 수 있게 된다.
나만의 카테고리 다이얼로그 (1)
[C#_시트 프로그램] 나만의 카테고리 다이얼로그 (1)
카테고리를 대중소로 하려고했더니... 너무 레벨이 깊은 것 같아서대분류 소문류 총 2개의 단계로만 하려고한다. 또, 이 와중에 최고 레퍼런스가 있었다. 여기서 주요한 점은 프로그래밍 이라
apple-churr.tistory.com
나만의 카테고리 다이얼로그 (3)
[C#_시트 프로그램] 나만의 카테고리 다이얼로그 (3)
카테고리 제거카테고리를 제거하는건 앞서 설계했었다.카테고리 제거 시 경고 메시지를 띄운다.상위 카테고리는 하위 카테고리가 있다면, 제거할 수 없다.카테고리를 제거하면, 실제로 다룰 데
apple-churr.tistory.com
'프로그래밍 > C#_시트 프로그램' 카테고리의 다른 글
[C#_시트 프로그램] 나만의 카테고리 다이얼로그 (4) (0) | 2024.11.21 |
---|---|
[C#_시트 프로그램] 나만의 카테고리 다이얼로그 (3) (0) | 2024.11.20 |
[C#_시트 프로그램] 나만의 카테고리 다이얼로그 (1) (0) | 2024.11.18 |
[C#_시트 프로그램] UI 초기 구상 (0) | 2024.11.16 |
[C#_시트 프로그램] 시작은 간단하게 계획부터 해보자. (0) | 2024.11.15 |