닷넷
-
WPF에서 DevExpress의 RichEditControl에서 작업한 데이터를 Spire.Doc을 통해서 문서 파일로 변환 할 때 일어나는 현상 및 해결 방법닷넷 2024. 8. 28. 17:38
DevExpress에서는 MS의 워드 프로그램에서 작업하는 것처럼 본인이 WPF로 만드는 프로그램에서도 비슷한 작업을 할 수 있게 해주는 기능을 제공한다.RichEditControl을 사용하면 되는 것.사실 RichEditControl을 통해서 내용을 바로 문서 파일로 저장할 수 있기 때문에 RichEditControl을 통해서만 텍스트 편집 작업을 하면 Spire.Doc과 같은 문서 작업 전용 라이브러리는 필요 없다.그러나 내가 현재 유지보수 중인 프로그램은 여러 화면에서 작업한 내용을 취합해서 하나의 문서 파일로 만들어 내어야 한다. 문서 파일은 워드 뿐만 아니라 파워포인트, 엑셀, PDF 등일 수 있다.그렇게 상용 라이브러리 중에서 Spire.Doc을 사용 중이다. 문제 발견이때 내용은 단순 문자열..
-
NullReferenceException, Null 참조 오류 등 Null 예외 처리에 대한 고찰과 지침서닷넷/C# 2024. 7. 12. 11:26
NullReferenceException 에러가 발생 할 때마다 아, 다음에는 좀 더 꼼꼼하게 확인해야지 해도 시간이 지나면 같은 문제를 겪고는 한다.그래서 매 테스트 때마다 하나 씩 확인하고, 잊지 않기 위해 이렇게 지침서를 작성한다. 그리고 문득 이런 고찰을 하게 된다.왜 프로그램은 Null인 것을 참조하면 그냥 넘어가지 않고, 기어이 오류 메시지를 뱉어내는 걸까?왜 Null 참조 오류를 무시 하지 못 하게 하는 걸까? ○ 그 이유Null 객체에 접근하려고 하면 메모리 접근 오류가 발생하여 프로그램이 비정상적으로 종료되거나 프로그램의 성격에 따라서 데이터 손실, 보안 문제 등을 일으킬 수 있다. 이러한 문제는 심각한 버그를 야기한다. 이를 방지하고 예방하기 위해 개발자에게 문제를 인지시키는 방법이자..
-
WPF DevExpress LayoutPanel의 header에 custom button 놓기닷넷/WPF 2024. 4. 22. 15:58
DevExpress LayoutPanel의 header에 custom button 놓기 참고 자료 https://supportcenter.devexpress.com/ticket/details/t919567/add-new-buttons-to-layoutpanel-header-that-has-look-and-feel-of-pin-and-close-buttons https://docs.devexpress.com/WPF/DevExpress.Xpf.Docking.LayoutPanel https://docs.devexpress.com/WPF/DevExpress.Xpf.Docking.LayoutPanel._members https://docs.devexpress.com/WPF/DevExpress.Xpf.Docking..
-
C# WPF, WinForm DevExpress GridControl 붙여넣기 기능닷넷/WPF 2024. 4. 22. 15:49
devexpress GridControl에 복사한 것 붙여넣기 Clipboard 관련 1. WinForm https://docs.devexpress.com/WindowsForms/DevExpress.XtraGrid.Views.Grid.GridView.ClipboardRowPasting 2. WPF 1) 클립보드 데이터를 그리드컨트롤 칼럼과 로우에 맞춰서 데이터 들어가는 형식으로 전달 받아 사용 할 수 있음, 붙여넣기 아예 취소 가능 https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TableView.ClipboardRowPasting 2) 붙여넣기 완료 후 데이터별 처리할 때 https://docs.devexpress.com/WPF/DevExpress.Xpf.G..
-
WPF Binding Path에 관하여 (바인딩 경로)닷넷/WPF 2024. 4. 8. 22:02
2023.04.07 - [닷넷/WPF] - C# WPF에서 Binding(바인딩)이란? C# WPF에서 Binding(바인딩)이란? WPF에서는 MVVM 패턴을 지키는 게 중요합니다. 개인적으로 생각하기에는 이 MVVM 패턴대로 만들지 않을 것이라면 개발 속도로 봤을 때나 유지보수 적으로 봤을 때나 그냥 윈폼(WinForms)으로 만드는게 jasmintime.com 이전글을 통해서 WPF에서 데이터 바인딩은 UI 요소와 데이터 소스 간의 연결을 쉽게 설정할 수 있는 기능임을 알 수 있습니다. 이 바인딩을 잘 쓰기 위해서는 바인딩 구문을 아는 것이 중요합니다. 그 중에서 바인딩 경로는 몇 가지 유형이 있으며, 경로 지정을 어떻게 하느냐에 따라서 자기 자신의 뷰모델이 아닌 부모 요소 혹은 그 외 기타와 연결..
-
C# 윈폼에 아키텍처 패턴을 적용해보자! (feat. MVP, MVVM)닷넷/WinForms 2024. 2. 22. 22:26
공장에서 윈폼을 하다보면 객체지향 언어인 C#을 절차적인 언어처럼 쓰고, 막 주먹구구식으로 쓰는 경우가 태반일 것이다. 그러다 보면 유지보수가 너어무 힘들어서 윈폼 자체에 노이로제가 걸릴 수도 있다. 그러나! C#의 윈폼도 엄연히 C#의 프레임워크 중 하나인 것 뿐인데, C#은 객체지향 언어인데, 윈폼도 객체지향 적으로 짤 수는 없는 것일까? 수월한 유지보수를 위한 아키텍처 패턴과 디자인 패턴을 적용할 수 없는 것일까? 정답은 가능하다! 객체지향 적으로 짜기 위해 객체지향 설계 5원칙을 따르면 되기는 하나, 통용적인 패턴을 이용하면 보다 쉽게 짤 수가 있다. 여기서는 아키텍처 패턴을 적용 해보는 것에 대해서 설명하고자 한다. 1. 아키텍처 패턴이란? 아키텍처 패턴은 소프트웨어 설계에서 반복적으로 발생하는..
-
닷넷 개발자 로드맵 2024 (.NET Developer Roadmap 2024.)닷넷 2024. 1. 3. 13:02
Dr Milan Milanović님이 작성한 닷넷 엔지니어가 되기 위한 단계적 로드맵, 2024년 버전. 간소화 버전 자세한 내용은 깃허브에서 확인 https://github.com/milanm/DotNet-Developer-Roadmap GitHub - milanm/DotNet-Developer-Roadmap: The comprehensive .NET Developer Roadmap by seniority level. The comprehensive .NET Developer Roadmap by seniority level. - GitHub - milanm/DotNet-Developer-Roadmap: The comprehensive .NET Developer Roadmap by seniority le..
-
C# WinForms DevExpress AccordionControl 사용하기닷넷/WinForms 2023. 8. 23. 11:50
DevExpress의 AccordionControl은 사용자 인터페이스(UI)에서 네비게이션 및 그룹화된 정보를 표시하기 위해 사용되는 강력한 컨트롤입니다. 이 컨트롤은 대시보드, 패널 어플리케이션, 설정 페이지 등에서 유용하게 활용될 수 있습니다. AccordionControl은 주로 다음과 같은 특징을 갖습니다. 1. 그룹화 및 네비게이션: AccordionControl은 요소들을 그룹화하여 각 그룹의 헤더와 본문을 함께 표시합니다. 사용자는 그룹의 헤더를 클릭하거나 펼침/접힘 아이콘을 클릭하여 해당 그룹의 본문을 표시하거나 숨길 수 있습니다. 2. 커스텀 뷰: 각각의 그룹은 커스텀 뷰를 가질 수 있으며, 텍스트, 이미지, 버튼, 그리드 등 다양한 컨트롤을 포함할 수 있습니다. 3. 컨텍스트 버튼: ..
-
C# WPF DataGrid에 Row번호 출력 되는 칼럼 추가하기 (닷넷프레임워크 .net framework 4.0 기준)닷넷/WPF 2023. 8. 10. 14:58
닷넷5.0 이상 기준으로는 https://kaki104.tistory.com/808 DataGrid에 Row번호를 출력하기 별도의 3rd party 컨트롤을 사용하지 않는 경우 DataGrid를 많이 사용하는데, RowNumber를 출력하는 방법을 찾아보니 MVVM pattern에서 사용하기 쉬운 방법에 대해서 설명되어 있는 것이 없는 것 같아서 간 kaki104.tistory.com 이 글을 참고 하면 되지만, 닷넷프레임워크 4.0에서는 Microsoft.Xaml.Behaviors.Wpf 1.1.39를 설치할 수 없기 때문에 다음의 두 가지 방법이 있습니다. 비하인드 코드에서 /// /// ListDetail.xaml에 대한 상호 작용 논리 /// private void Loaded(object sen..
-
Microsoft의 Text-to-Speech (TTS), Azure Cognitive Services를 C#에서 사용하는 방법닷넷/C# 2023. 7. 27. 10:07
TTS는 텍스트를 음성으로 변환시켜주는 기술이며, 이것을 서비스하고 API로 만든 회사들이 꽤 많이 있다. 그 중에서 Microsoft에서 제공하는 TTS를 사용하는 방법과 C#에서 적용하는 방법을 설명한다. Azure 사이트에서 1. 사이트 접속 및 계정 로그인 https://azure.microsoft.com/ko-kr/products/cognitive-services/text-to-speech Text to Speech – 현실적인 AI 음성 생성기 | Microsoft Azure AI 음성 생성기를 사용하여 합성된 음성을 사용하여 자연스럽게 말하는 앱 및 서비스를 빌드합니다. 텍스트 판독기 및 텍스트 음성 변환 기능을 사용하여 고객의 몰입도를 높일 수 있습니다. azure.microsoft.com..
-
C# Interlocked.Increment에 대한 고찰닷넷/C# 2023. 7. 20. 10:33
DB에서 인덱스를 자동증가 시키는 칼럼을 만들 수 있는 것처럼 C#에서 하나의 프로퍼티를 자동증가 인덱스로 만든 방법이 없을까 고민해보다가 챗GPT가 알려준 방법인 Interlocked.Increment를 사용했었다. 첫 번째 방법, 생성자에서 초기화 public class Info { // ... existing properties ... private static int currentIndex = 0; public int Index { get; } public Info() { Index = Interlocked.Increment(ref currentIndex); } } 두 번째 방법, 리스트에 추가할 때 인덱스 값 설정 public class Info { // ... existing propertie..
-
WPF Converter (컨버터, 값 변환기)닷넷/WPF 2023. 6. 9. 15:06
Converter WPF에서 Converter는 WPF의 핵심 기능 중 하나인 데이터 바인딩에서 데이터를 바인딩하는 동안 값의 변환을 수행하는 데 사용되는 기능입니다. Converter를 사용하면 데이터를 원하는 형식으로 변환하거나, 값을 가공하여 UI 요소에 표시할 수 있습니다. 예를 들어, bool 값을 "예" 또는 "아니오"로 변환하거나, 숫자를 포맷팅하거나, 날짜 형식을 변경하는 등의 작업을 수행할 수 있습니다. 사용방법 Converter는 IValueConverter 또는 IMultiValueConverter 인터페이스를 구현하는 클래스로 작성됩니다. IValueConverter는 단일 값을 변환하는 데 쓰이며, IMultiValueConverter는 여러 값을 조합하여 변환하는 데 쓰입니다. ..
-
C# 기초지식, 정보 정리 (면접 질문 대비, 꼭 알아야 하는 것)닷넷/C# 2023. 4. 11. 18:38
미루고 미루었던, ChatGPT를 활용하면 좀 더 수월하게 작성할 수 있게 되었으므로, C#에 대해서 꼭 알아야 할 기초 지식과 정보를 정리하였습니다. (링크드인 C# 테스트를 오늘 해 봤는데 영어 독해를 잘 못 했다고 해도, 그 용어들에 대해 알았다면 쉬운 문제인데 정답을 맞추지 못한 문제들이 많아서 나의 부족을 깨닫고 다시 공부하고 정리할 겸 쓰는 건 안 비밀) 1. C#이란 C#(C-Sharp)은 Microsoft에서 개발한 객체 지향 프로그래밍 언어입니다. Anders Hejlsberg가 설계한 이 언어는 C++와 Java와 유사한 구문을 가지고 있으며, 현대적인 프로그래밍 언어의 기능을 제공합니다. C#은 .NET Framework와 함께 사용되어 다양한 종류의 Windows 응용 프로그램 개발..
-
C# WPF에서 Binding(바인딩)이란?닷넷/WPF 2023. 4. 7. 18:17
WPF에서는 MVVM 패턴을 지키는 게 중요합니다. 개인적으로 생각하기에는 이 MVVM 패턴대로 만들지 않을 것이라면 개발 속도로 봤을 때나 유지보수 적으로 봤을 때나 그냥 윈폼(WinForms)으로 만드는게 낫습니다. 따라서 바인딩은 MVVM 패턴을 지키며 WPF에서 애플리케이션을 만들 때 중요한 요소가 됩니다. 왜냐하면 WPF에서 바인딩(Binding)은 데이터 소스와 UI 요소 간의 연결을 뜻하기 때문입니다. 즉, 뷰와 뷰모델의 연결점입니다. 바인딩을 사용하면 소스의 데이터가 변경될 때 UI가 자동으로 업데이트되고, 반대로 UI에서의 변경 사항이 소스에 전달됩니다. 이렇게 함으로써 데이터와 UI 간의 동기화가 유지되어 개발자가 수동으로 UI를 업데이트할 필요가 없습니다. WPF에서는 XAML (eX..