본문 바로가기

개발새발/C#

(5)
[C#/WPF] 숫자만 입력되는 소수점 TextBox https://github.com/Junnis0123/FloatTextBox Junnis0123/FloatTextBox Wpf Float TextBox Contorl. Contribute to Junnis0123/FloatTextBox development by creating an account on GitHub. github.com 개발하다가 필요해서 만들었다. 기능은 아래와 같다. 1. 숫자만 입력됨. 2. 소수점 자리수를 지정해주면 해당 자리수까지만 입력 가능함. 3. 점 누르면 자동으로 점으로 포커스 이동함 4. 아무숫자나 막 입력해놔도 포커스 잃었을 때 포맷에 맞춰지게 했음. 5. 초기에 숫자 수에 맞춰서 0.x로 초기화
[C#] SaveFileDialog을 이용하여 Excel파일로 DataTable 저장하기. C#에서 DataTable을 Excel로 저장하는 것은 물론 하드코딩으로도 가능하지만 편리한 라이브러리가 있다. 그 중에서도 EPPlus를 이용하여 데이터테이블 형식의 데이터를 엑셀 파일로 저장하는 방법을 소개해보겠다. 우선 EPPlus를 설치하자. 누겟 패키지 관리 페이지에서 EPPlus를 검색하고 최상단에 있는 것을 다운받으면 자동으로 dll이 참조된다. 매우 편리하다! EPPlus를 설치한 다음 필요한 부분에서 함수를 생성한 뒤 다음 코드 샘플과 같이 이용하면 된다.
[C#/WPF] Extended WPF Toolkit 사용하기. WPF에는 DatePicker가 있지만 TimePicker는 없다. 이 문제점을 해결하기 위해 구글에 검색해보니 무료로 제공해주는 확장 툴킷이 있었다. (물론 돈을 내면 테마 등의 더 편리한 기능을 사용 가능한 듯 하다.) 자세한 내용은 아래 이미지 밑의 링크를 참고하면 된다. NuGet 설치 및 도구상자에 로드하는 방법은 다음과 같다. 툴킷을 제대로 설치하고 도구상자에 넣었다면 이제 툴킷이 제공해주는 더욱 편리하고 다양한 UI 아이템을 사용할 수 있게 된다.
[C#/WPF] TabControl ItemsSource 바인딩 시 ViewModel을 상속받지 않고 생성자를 호출하는 문제 해결. 개발하다보니 또 난관이다. Tab Control에 Items Source로 ObservableCollection을 바인딩했다. 생성될 각 탭에 대한 화면은 UserControl로 정의하고 MainView에 DataTemplate을 적용해주었다. 문제는 바인딩된 리스트에 자식을 만들면 그 값이 바로 View로 넘어가는 게 아니라 해당 값으로 View에 뿌려줄 인스턴스를 재생성하는 것이다. 그렇게 되면 View에서 만들어진 인스턴스와 메인 뷰모델이 가진 인스턴스에 차이가 발생한다. +++ 알고 보니 내가 DataContext를 설정 해 주어서 2번 로드 되는 거였다. UserControl에 설정되어 있던 DataContext 항목을 삭제하면 동적으로 생성된(Observable Collection 바인딩 된)..
[C#] Dictionary : Key Type으로 Key값 직접(색인) 접근하기. Dictionary는 Key, Value Pair로 값이 저장되는 Generic Collection이다. 보통 Key 값을 String이나 int로 사용하던데, 클래스로 지정했더니 new로 초기화한 인스턴스와 딕셔너리에 포함되어있는 인스턴스가 달라서 Combines나 색인 접근이 불가능한 문제점이 발생했다. 위와 같은 문제가 발생했을 때는 인스턴스가 동일한 객체일 때 언제나 동일한 Equals 연산 및 해쉬를 반환해야 한다.해결방법은 GetHashCode 함수와 Equals 함수를 오버라이딩 하면 된다. 12345678910111213141516171819202122232425public override bool Equals(object obj) { if (this.GetType() == obj.GetT..