본문 바로가기
반응형

C#22

C#, DevExpress GridView 가로 스크롤을 오른쪽으로 이동하기 가계부를 만들면서 필요한 기능을 기록합니다. GridView 컨트롤의 가로 스크롤을 자동 이동하기 아래 처럼 여러개의 컬럼을 가진 폭이 긴~ 그리드가 있습니다. 그리드의 Form 사이즈를 변경하면 가로 스크롤이 왼쪽에 위치하면서 오른쪽의 컬럼이 보이지 않게 됩니다. 고정시킨 컬럼(거래일자, 계정) 또한 위치가 변하지 않습니다. 그럼 다시 스크롤을 오른쪽으로 변경시켜야 하는 귀차니즘 이벤트가 발생합니다. 😫 아래처럼 자동으로 스크롤을 오른쪽으로 이동시키고 싶다면? 크기가 변할 때마다 설정한 컬럼을 보여줍니다. 고정으로 설정된 컬럼은 왼쪽에 항시 표시 됩니다. 코드 void gridControl1_SizeChanged(object sender, EventArgs e) { gridView1.MakeColumn.. 2022. 11. 11.
C#, Object 값 형식을 보관하는 일반화된 클래스 DevExpress의 컨트롤을 사용하면 값을 읽고 쓸 수 있는 EditValue 항목이 있다. 그런데 Object 형식이다 보니, 다른 곳에 값을 전달할 때 형변환을 해야하는 귀차니즘이 있다. DataRow Column 값도 마찬가지. 그래서 자동으로 형변환을 해주는 클래스를 만들었다. 처음에는 변수 선언을 해야 하니 반자동... (개인용이므로 참고만 할 것) 코드 /* * Update: 2022-11-08 * Simulz */ /// /// 레코드의 데이터와 컬럼 정보를 포함합니다. /// /// 데이터 형식 public record OleColumn : object, IComparable { public OleColumn() { } /// /// 컬럼명 /// public string Name { g.. 2022. 11. 8.
C# DevExpress GridView FooterCell 숫자 꾸미기 Grid의 Footer Cell은 디자인 타임에 Appearance 설정이 되지 않는다. 런타임에 CustomDrawFooterCell 이벤트를 사용하면 원하는 대로 꾸밀 수 있다. FooterCell이 그려지기 전에 이벤트가 발생한다. private void gridView1_CustomDrawFooterCell(object sender, FooterCellCustomDrawEventArgs e) { if (string.Compare(e.Column.FieldName, "수입") == 0) { e.Appearance.ForeColor = Color.Blue; e.Appearance.Font = new Font(AppearanceObject.DefaultFont, FontStyle.Bold); e.Pai.. 2022. 9. 15.
C# Dx TreeListLookUpEdit TreeListLookUpEdit는 트리(다단계) 구조의 아이템 목록을 나타내는 컴포넌트로 아래 그림 처럼 보여진다. TreeListLookUpEdit에서 Combo 버튼을 누르면 PopUp 창으로 TreeList가 보여지는 방식이다. 열 기본 구성은 Primary Key, Parent Key, Item 3가지가 필요하다. Primary Key: 고유 키로 Integer 형식으로 하면 된다. Parent Key: 현재 항목이 하위라면 상위 항목의 고유키를 가리킨다. 상위 항목이 없는 최상위 항목이라면 0이 된다. Item: 항목 내용으로 String 형식으로 하면 된다. SQL 쿼리 결과를 DataTable에 저장하고 바인딩을 하면 된다. treeListLookUpEdit.Properties.DataSo.. 2022. 9. 15.
(C#) 이지데이 스타일의 가계부 개발 중... 2003년 이후, 20년 가까이 이용했던 ezDay 가계부 서비스가 2022.10.01 종료될 예정이다. (이지데이 다이어리는 2002년 7월, 가계부는 2003년 1월부터 서비스) 이지데이 가계부 기능에 대응할 서비스, 프로그램이 20년째 나오지 않은 상황에서 매우 당황스러울 뿐이다. (그나마 기능이 많고 비슷하고 커스터마이징이 되는 무료 어플(구글)이 '편한가계부'이다) 그래서..계속 이용할 마음에 디자인과 기능을 베끼면서 만드는 중이다. 요즘은 Visual이 대세~ C#으로 만들면 쉽다.(말은 쉽다) 실행파일 하나로 로컬에서 동작하고, 포터블로 USB에 담아두고 쓸 수 있는 윈도우용 응용 프로그램. 프로그램이 완성될 때까지, 데이터베이스에 직접 데이터를 입력해야 한다. 그래서 DB는 Access D.. 2022. 8. 12.
(C#) Object sender Switch 비교문 (패턴매칭) 메뉴, 버튼의 Click 이벤트를 처리할 때, 하나의 메서드로 통합하려면 이전에는 if~else if문을 엄청나게 써댔다. if문에도 sender as ToolStrip~~ 식으로 바꾸고 == 비교하고...{ }중괄호 쓰고... 같은 역할을 하는 버튼인데도 같은 if문을 또 써야 하고... switch 패턴 매칭으로 코드를 줄여보자. private void menu_Click(object sender, EventArgs e) { switch (sender) { case { } x when x == menu_1번: break; case { } x when x == menu_2번: case { } x2 when x2 == button_1번: // 메뉴버튼과 툴바버튼 처럼 클래스가 달라도 묶어서 사용 가능 b.. 2022. 8. 11.
ConfuserEX가 적용된 DLL 참조시 오류 발생할 때 보호되어 있는 글 입니다. 2022. 2. 6.
C# Async, Thread에서 UI 처리시 Freezing 현상 보호되어 있는 글 입니다. 2021. 6. 16.
C#, 키움 OpenAPI GetCommDataEx 처리 속도 GetCommDataEx() vs GetCommData() 처리 속도 비교 종목 A 종목B 종목C GetCommDataEx() 5041ms 4989ms 4936ms GetCommData() 200ms 193ms 210ms GetCommDataEx() 변환 과정 Object GetCommDataEx() -> Object[,] -> String -> 출력 박싱, 언박싱을 거치면서 CPU, RAM 사용이 늘어남. GetCommData() 변환 과정 String GetCommData() -> 출력 형식 변환없이 사용됨. 2021. 6. 12.
반응형