복수문자 파싱 string 문자열을 특정한 구분자로 분리(파싱)해야하는 경우가 빈번하게 발생한다. 예를 들어 "강아지, 고양이, 독수리, 코끼리, 기린" 이라는 문자를 string으로 받았는데 string에 있는 동물의 종수를 알아야 한다거나, 아니면 한줄씩 화면에 출력해야 하는 경우 등 다양한 경우가 있을 수 있다. 이럴 경우 편하게 사용할 수 있는 함수가 split 이다. split을 사용하면 특정 문자를 기준으로 string에 입력된 문자를 배열로 변환할 수 있다. 변환할 배열의 타입을 list로 받을 수도 있고 string[] 로 받아도 된다. 콤마로만 구분이 가능한 string -> list 변환 예제 // 동물을 콤마 기준으로 입력 string animals = "강아지, 고양이, 독수리, 코..

그리드뷰에서 자동크기 설정 DevExpress GridView에서 칼럼의 크기를 자동으로 조절되도록할 수 있다. 기본으로 칼럼을 생성하면 width=75 사이즈로 되어있는데 실제 컴파일해보면 크기는 반영되지 않는다. 그 이유는 기본적으로 gridview의 OptionsView -> ColumnAutoWidth = true 옵션으로 되어있기 때문이다. true로 되어있는 경우 칼럼별 width 사이즈는 무시하고 Layout에서 설정해놓은 칼럼의 사이즈 비율에 따라서 화면에 출력된다. 현재 Layout에서 아이디 칼럼의 비율이 15% 정도 된다면, 컴파일 후 화면에 출력되는 그리드 전체 사이즈 중 15% 비율로 아이디 칼럼이 출력된다. 그리드뷰 사이즈가 줄면 칼럼 사이즈도 줄고 그리드 사이즈가 커지면 칼럼 ..

DevExpress GridView 컨트롤에서 칼럼 별로 필터기능이 제공된다. Grid Designer에 들어가서 Views -> GridView1 -> OptionsView -> ShowAutoFilterRow = true 옵션으로 변경해주면 된다. DevExpress Gridview 칼럼 필터 추가 1. Run Desinger 클릭 2. Views -> gridView1 클릭 3. OptionsView -> ShowAutoFilterRow = true 선택 4. UI에서 보면 칼럼 아래에 Filter Row가 추가된 것을 확인할 수 있다. 5. Filter에 값을 넣어서 원하는 데이터를 확인할 수 있다. 이름에 "워랜" 이라고 검색하면 "워랜"으로 시작하는 모든 Row가 검색된다. 주소에 "*한국동"..

Devexpress에서는 LayoutControl를 사용해서 컨트롤을 자동정렬할 수 있다. 자동정렬을 사용하지 않을 경우 UI를 디자인하는데 상당한 시간이 소요된다. Form에 LayoutControl을 올리고 그 이후에 button, textedit 등을 드래그, 드랍으로 옮기면 간편하게 원하는대로 디자인할 수 있다. button, textedit 좌측 상단에 정렬 1. Form 생성 후 LayoutControl 을 Form위에 올린다. 2. LayoutControl 범위를 Form 전체로 변경해서 Form 전체에 LayoutControl 적용 None -> Fill 로 옵션이 변경되면서 Form 전체에 적용된다. 3. Form 전체에 LayoutControl을 감쌌기 때문에 Form에 올리면 자동으로..

DateTime을 사용해서 날짜 및 시간 차이를 구할 수 있다. 먼저 날짜 차이를 구할 DateTime 2개를 만들고 TimeSpan으로 2 날짜 간의 차이를 구하면 된다. 예제로 내 생일이 얼마나 남았는지 계산해 보도록 하겠다. 날짜 차이 구하기 예제 DateTime currDate = DateTime.Now; // 현재 일자 DateTime birthDate = new DateTime(2023, 12, 14); // 생일 일자 TimeSpan? timeDiff = birthDate.Date - currDate.Date; // 생일일자 - 현재일자 int dayDiff = timeDiff.Value.Days; // 남은 일자 299 1. DateTime currDate = DateTime.Now; cu..

C# 특정 자릿수 문자 추가 하나씩 증가되는 문서번호를 여러 자릿수로 만들거나, sub 번호를 4자리로 만드는 등 특정 자릿수에 특정 문자를 추가할 경우 PadLeft, PadRight 등을 사용해서 구현할 수 있다. 예를 들어 subNo라는 칼럼에 0001, 0002, 0003, 0004... 등으로 순차 증가되는 문자를 넣어줘야한다고 가정하자. 이럴 경우 아래 2가지 조건을 만족해야 한다. 1. 숫자가 1씩 증가해야 한다. 2. 자릿수는 4자리를 유지해야 한다. PadLeft를 사용하지 않은 예제 PadLeft를 사용하지 않고 조금 무식하게 만든 예제이다. 이렇게 해도 0001~9999 까지 순차적으로 값을 생성할 수 있지만 코드 가독성도 좋지않고 간단한 로직인데도 복잡하다. for(int i = 1..

C# 현재 위치의 함수명 호출 System.Reflection.MethodBase.GetCurrentMethod().Name 함수를 사용해서 현재 위치의 함수명을 호출할 수 있다. 그리고 이를 사용해서 프로그램에서 예외가 발생했을 때 예외가 발생한 위치의 함수명을 화면에 출력하거나 DB에 저장해주면 빠르게 에러를 찾을 수 있다. 현재 위치의 함수명 호출 예제 private void button1_Click(object sender, EventArgs e) { string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name; // 현재 함수명 호출 Console.WriteLine(methodName); // 현재 위치의 함수명 "button..

C# 버튼에 배경색 넣기 버튼의 배경색을 변경하기 위해서는 버튼명. BackColor 속성에 Color 값을 넣으면 된다. Color 값은 System.Drawing.Color 사용해서 넣을 수 있고 Color.FromArgb 또는 Color.Red 등을 사용하면 된다. 버튼에 색상 넣는 방법 예제 버튼을 하나 만들고 버튼명은 btn_Sample로 변경했다. 그리고 버튼의 BackColor에 빨간색 Color를 입력해 줬다. 1. Color.FromArgb(255,0,0) 사용 2. Color.Red 사용 // 빨간색상을 버튼 배경색으로 넣는 방법 // 예제에 사용할 버튼 name = "btn_Sample" // 1. Color.FromArgb 사용 btn_Sample.BackColor = Color.F..