프로그래밍 언어30 [C#] Form에서 다른 Form으로 데이터 전송하는 방법 에러 메시지를 표시하거나, Yes/No와 같은 간단한 결과를 얻으려는 경우 MessageBox에서 해결할 수 있다. 하지만 특정 데이터를 하나의 Form에서 받은 후 다른 Form에 전달해야 하는 경우, MessageBox로는 불가능하다. 검색을 통해 여러가지 방법을 찾았지만, DataPassEventHandler를 사용하는 방법이 가장 직관적이고 명확한 방식이라 생각해 DataPassEventHandler를 사용하는 방법을 소개한다. DataPassEventHandler를 사용하는 방식은 아래와 같다. 데이터를 받을 Form(또는 xaml)을 부모, 데이터를 전송할 Form(또는 xaml)을 자식이라 하면 1. 부모 Form에서 자식 Form에 대한 DataPassEventHandler를 정의한다. 2.. 2022. 10. 25. Task / Thread 차이점, Task 사용법 Task는 구현하고 싶은 작업 자체를 의미하며, Thread는 구현하고 싶은 작업을 수행하는 수많은 작업자들 중 하나를 의미한다. Task를 사용하면 어디에서 실제로 해당 작업을 수행했는지 신경 쓰지 않기 때문에 실행자를 제어할 수 없다. (전체 프로세스가 하나의 스레드에 의해 처리되는지 / 멀티 스레드로 처리되는지 모름) 결론 : 실행 중인 작업을 언제든지 중지할 수 있는 제어 수준 필요 : Thread 사용 실행 중인 작업이 완료된 후 중지되는 정도의 제어 수준 필요 : Task 사용 (반복문 내에서 CancellationToken을 사용하면 중지할 수 있지만, 해당 반복문을 진행한 뒤 중지됨) Task 사용 예 1 (비동기 메서드로 적용) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 .. 2022. 10. 25. [C#] TreeView 상위 노드 체크시 하위 노드 연동 상위 노드가 체크된 경우 하위 노드들이 모두 일괄 체크되거나, 반대로 상위 노드가 체크 해제된 경우 하위 노드들이 모두 일괄 체크 해제되는 코드를 만들어보았다. 우선, TreeView에서 AfterCheck 이벤트 발생 시 동작하도록 설정하였다. 아래 코드를 보면 node의 Nodes를 확인(자식 노드)하여 체크 상태를 따라가도록 설정하는 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 private void tv_AfterCheck(object sender, TreeViewEventArgs e) { // 상위 노드 체크/언체크시 하위 노드도 함께 체크/언체크 되도록 설정 var action = e.Action; var node = e.Node; var children = node.Nodes; .. 2022. 1. 7. [C#] WinForm 의 모든 컨트롤 가져오기 특정 Form의 Control을 가져오려는 경우 Linq의 Cast를 사용하면 된다. 아래는 모든 컨트롤 정보를 리스트로 정의하는 코드이다. 1 2 3 // Control를 가져오려는 Form의 이름 : myForm Form myForm; List Control_List = myForm.Controls.Cast().ToList(); cs TextBox, CheckBox와 같은 특정 Control 요소만 필요한 경우, Linq의 Where를 사용하여 필터링 할 수 있다. 1 2 3 4 5 6 7 // TextBox만 필터링 List Control_List = myForm.Controls.Cast().Where(p => p is TextBox).ToList(); // TextBox, CheckBox 필터링 .. 2022. 1. 7. 이전 1 2 3 4 5 6 ··· 8 다음