본문 바로가기

C#35

 

(캡틴 산업) COI 수직 밸런서 모드 for v0.5.4 캡틴 오브 인더스트리가 v0.5.4로 패치되면서 그래픽 부분이 많이 개선되었습니다. 그래픽 관련 클래스도 변경되어 모드 제작에 영향을 받았습니다. 그중 수직 밸런서 모드가 적용된 게임을 불러올 때 오류가 발생하는데, 업데이트한 버전이 github에 공개되었습니다. (코드 변경은 없습니다) v0.5.4에서 사용할 수 있습니다. 직접 원본 소스를 재컴파일 후 .dll 파일을 덮어쓰기 해도 정상 동작 됩니다. 다운로드 Releases · Hauklotz/avenzos-coi-vertical-balancers (github.com) 원본 소스를 포크한 소스를 또 포크 해서 만들었으므로 같은 이름에 주의해야 합니다. 원본은 2023-04-14를 마지막으로 더 이상 업데이트 되고 있지 않습니다. 2023. 8. 28.
C#, 'System.Int32' 'System.Windows.Forms.Keys' 캐스팅이 잘못되었습니다. 리버스 엔지니어링을 하다보면 Form.cs 파일을 디자인 탭에서 열때, 'System.Windows.Forms.Keys' 의 캐스팅이 잘못 되었다는 오류가 발생한다. 이는 어떤 개체에 단축키가 두 개 이상의 조합으로 지정되었을 때, 그 값이 Enum 형식이 아닌 Int형으로 지정되었기 때문이다. 예를 들어 this.submn_Exit.ShortcutKeys = (Keys)262259; 위와 같은 코드는 아래처럼 변경해야 한다. this.submn_Exit.ShortcutKeys = Keys.Alt | Keys.F4; 정수형의 값은 아래 문서를 참고한다. Shortcut 열거형 (System.Windows.Forms) | Microsoft Learn Shortcut 열거형 (System.Windows.Fo.. 2023. 7. 20.
COI (캡틴오브인더스트리) 모드 사용하기 Captain of Industry 게임이 v0.5 패치 이후 많은 변화가 생겼습니다. 사용자 파일의 경로가 변경됨에 따라 모드 파일도 변경된 경로에 설치해야 합니다. 1. 경로 찾기 시작 - 실행 또는 탐색기의 경로 입력(단축키 F4)에 %appdata% 를 입력하면 됩니다. 그럼 윈도우 사용자 계정\AppData\Roaming 디렉터리가 탐색기에 표시됩니다. 그 중, Captain of Industry\Mods 폴더로 이동합니다. %appdata%\Captain of Industry\Mods\ 2. 모드 내려 받기 2.1. CaptainOfCheats CaptainOfCheats 모드는 즉시 적용 치트이므로 게임 플레이에 흥미를 떨어뜨릴 수 있으므로, 아래 CoI.Mod.Better 모드를 추천합니다.. 2023. 7. 4.
C# SQLitePCLRaw로 SQLite3 데이터베이스 접속하기 아래 패키지를 설치한다. Remove-Package Microsoft.Data.Sqlite Install-Package Microsoft.Data.Sqlite.Core Install-Package SQLitePCLRaw.core Install-Package SQLitePCLRaw.provider.sqlite3 명령어를 보면 무엇을 제거하고 무엇을 설치해야 하는지 알 수 있다. using 문을 추가한다. using Microsoft.Data.Sqlite; 아래처럼 프로바이더 설정을 하고 연결을 하면 Open() 까지 오류 없이 진행 된다. SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_sqlite3()); using (var conn = new Sqli.. 2023. 6. 1.
C# Microsoft.Extensions.Caching.Memory 대신 LazyCache로 캐싱 사용하기 데이터베이스에서 값이 거의 바뀌지 않으며 수시로 같은 값을 쿼리할 때마다 DB에서 데이터를 가져오는데, 캐시를 사용하고 싶었다. .NET에서 캐싱 - .NET | Microsoft Learn .NET에서 캐싱 - .NET .NET에서 메모리 내 및 분산 캐싱을 구현하는 효과적인 방법을 검색합니다. .NET 캐싱을 사용하여 앱 성능 및 확장성을 향상시킵니다. learn.microsoft.com 위 문서를 보면... Microsoft.Extensions.Caching.Memory 클래스를 사용해야 한다는 것까지는 알았는데 사용법이 너무 복잡하다. 이를 간단히 사용할 수 있는 방법을 찾아보았다. 단순한 캐싱 기능만을 원했기 때문에 Nuget을 찾아보니 LazyCache가 눈에 띄었다. 게으른 사람을 위한 최적.. 2023. 5. 30.
C#, ForEach 확장 메서드 사용하기 e(item) => { e.Width = lookUpEdit.Height / 2; } 어떤 Object가 가지고 있는 Collection의 배열 값을 한 줄로 수정하기 위와 같은 DevExpress ~Edit에 ButtonEdit를 사용했을 때, 버튼의 폭을 변경하려면 Width 값을 버튼마다 적용해야 한다. 1. foreach 반복문은 직접 수정이 안 되므로, 새 개체의 인스턴스를 만들고 새로운 값으로 할당하고 원래 개체에 대입하고 여러 줄을 사용하므로 지저분하다. 2. Select 등의 LINQ도 값을 변경 후 다시 대입해야 한다. 3. ConvertAll은 ToList로 변환해야 한다. 간편하게 한 줄로 처리하고 싶다. 일단 아래처럼 확장 메서드를 만들고 아무 파일 이름으로 저장한다. namespa.. 2023. 5. 4.
SQLite Primary Key 컬럼의 정수형 값을 사용시 오류 발생 SQLite3의 rowID는 Int64, Long 형식을 사용한다. DevExpress의 LookUpEdit 데이터 바인딩을 SQLite DataTable로 연결했을 때, lookUpEdit.EditValue에 정수값을 대입하면 Null이 유지되거나, ThrowExceptionOnInvalidLookUpEditValueType 옵션이 True일 때 형식이 다르다는 예외가 발생한다. 해결하려면, 대입하려는 값을 Int64(또는 long) 형식으로 바꾸면 된다. lookUpEdit.EditValue = 1; // 오류 lookUpEdit.EditValue = (long)1; // 정상 lookUpEdit.EditValue = ConvertToInt64(1); // 정상 2023. 5. 3.
C# DevExpress, ComboBoxEdit Item에 배경색 지정하기 C# 가계부에서 거래별로 색상을 지정하는 기능은 거래를 등록할 때 설정할 수 있다. 버튼으로 색상을 선택하는 방법도 있지만, 8가지만 사용하게 되어있으므로 콤보박스를 사용해본다. void Form_Load(object sender, EventArgs e) { comboBoxEdit1.Properties.Items.Clear(); comboBoxEdit1.Properties.Items.AddRange(new string[] { " ", " ", " ", " ", " ", " ", " ", " " }); } private void comboBoxEdit1_DrawItem(object sender, ListBoxDrawItemEventArgs e) { Color userColor = e.Index switch.. 2023. 5. 1.
C# DevExpress Grid 행 색상 지정 MMEX의 거래 테이블에서 색상 지정된 레코드는 행의 배경을 색으로 보여준다. 이렇게 보여주는 것을 C# DevExpress Grid에서 따라해보자. GridView 에서 RowStyle 이벤트를 사용한다. private void gridView1_RowStyle(object sender, RowStyleEventArgs e) { GridView view = sender as GridView; if(e.RowHandle >= 0) { int followUpID = view.GetRowCellDisplayText(e.RowHandle, view.Columns["FOLLOWUPID"]).ToInt(); Color userColor = followUpID switch { 1 => Color.FromArgb(2.. 2023. 5. 1.