즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

개발 70

Enum 사용 시 인덱스가 순차적이지 않을 때 처리방법

인덱스대로 하지 않아도 되는데, 궂이 이렇게 Enum을 선언했을 때 해당 값을 Combobox에서 가져오는 방법을 제시해본다. private enum DB_USER_ROLE { UNKNOWN = 0, WORKER = 2, INFRA_ADMIN = 8, SUPER_ADMIN = 9, } // 콤보박스에는 이런식으로 넣을 수 있다. String만 들어가기에 뭔가 변환함수를 만들어야 한다. CboUserRole.Items.AddRange(Enum.GetNames(typeof(DB_USER_ROLE))); 상수는 위와 같다. private DB_USER_ROLE GetUserRole() { Dictionary dicUserRole = new Dictionary(); string[] lstUserRole = En..

개발/C# 2024.02.15

C#과 Node.js(TS)에서 각각 Sha256 Hash 같은 값 나오게 하기

라이브러리를 사용해서 해시값을 구하면 각각 다른 값이 나오거나 해서 쌩짜로 만들었다. (보고 베꼈다.) 원래 출처에서는 Timestamp를 넣어서 해시값을 구하는데 이렇게 되면 로직이 복잡해져서 그냥 빼버렸다. 상황에 따라서 넣어서 사용하자. 대신 Keystring을 랜덤화해서 사용해도 될 것 같다. C# 소스 public static string GenerateHMAC(string payload, string key = "keystring") { // 키 생성 var hmac_key = Encoding.UTF8.GetBytes(key); // Timestamp 생성 //var timespan = (timestamp - new DateTime(1970, 1, 1, 0, 0, 0)); //var hmac_..

개발/C# 2024.02.15

Datatable을 Listview에 바인딩해서 사용하기

Listview 10년 넘게 쓰다가 DevExpress사용한 이래 거의 사용하지 않다가 다시 사용하려니 엄청나게 불편하군요. 구글링을 해보니 10년 전에는 바인딩 지원을 했던 것 같은데 그것마저 사라져있었습니다. (.NET 6 기준) 데이터테이블을 사용하는 이유는 object를 listview에서는 지원하지 않기 때문입니다. 그리드에는 몇가지만 넣어두고 Row클릭 시에만 상세보기로 보여주려면 어떻게 해야 할까요? 방안1) 그리드에 모든 컬럼을 넣어두고 보여질 컬럼의 Width만 0보다 크게 한다. 방안2) 키값을 포함한 컬럼을 넣어두고 클릭할 때마다 DB로부터 다시 가져와 표시한다. Datatable을 사용하면 디비에서 긁어온 Row객체(Object)를 datarow에 넣어둘 수 있기 때문에 헛짓하지 않..

개발/C# 2024.02.13

Listbox에서 아이템을 위/아래로 이동하는 함수

위/아래 이동은 버튼을 추가했다고 가정한다. DevExpress의 ListBoxControl도 동일하게 동작가능하다. 아래 코에서 ListBox를 ListBoxControl로 수정해서 사용하면 된다. public static class ListBoxExtension { public static void MoveSelectedItemUp(this ListBox listBox) { _MoveSelectedItem(listBox, -1); } public static void MoveSelectedItemDown(this ListBox listBox) { _MoveSelectedItem(listBox, 1); } static void _MoveSelectedItem(ListBox listBox, int dir..

개발/C# 2024.02.06