| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- LogonUI
- c#
- unable to boot the simulator
- Column
- Resident Evil
- 젤리핀
- 시놀로지
- Header
- theme
- 깃티설치
- CmdKey
- gitea
- gitea설치
- Re
- DataTable
- jellyfin
- 깃티gpg
- Capcom
- gfd
- DataGridView
- synology
- toroisegit
- Gitea 설치
- 트레이아이콘
- trayicon
- 깃티
- Resident
- 시놀로지깃티설치
- checkbox
- Gitea GPG
- Today
- Total
목록Programming/C# (17)
C O D I N G
IMessageFilter 상속하여 새로운 Class 생성 Interface 된 함수를 생성하여 그안에 KeyUp =>0x101, KeyDown => 0x100 MouseDown, Up, Move 등 제어하고자하는 Event를 등록한 후, 프로그램 실행시 Application.AddFilterMessage( IMessageFilter로 상속하여 만든 Class 객체 ); 종료시에 RemoveFilterMessage해서 삭제해주도록 한다. Alt는 동작되지 않음... Sample Code 메시지를 필터링하고 디스패치되지 않게 하려면 true이고 다음 필터 또는 컨트롤에 계속 사용하려면 false입니다. 일반적으로 사용하는 ProcessCmdKey를 재사용하면 KeyDown 이벤트는 정상적으로 동작하나 Ke..
Interface - 여러클래스에 공통적인 기능을 추가 하기 위해 사용 (파생클래스에서 구현해야함 ) Abstract - 파생클래스에서 공유할 기본클래스의 공통적인 정의 제공하기 위해 사용 (파생클래스에서 구현해야함 ) Virtual - 메서드,속성, 인덱서 또는 이벤트 선언을 한정하는데 사용 (파생클래스에서 Override 하여 따로 사용할 수 있음) => Virtual은 Override 하지 않아도 사용 가능한 완전한 class (그대로 사용가능) Virtual한정자가 달린 것들을 재정의하여 사용 가능. => abstract는 여러개의 파생 클래스에서 공유할 기본 클래스의 공통적인 정의만 하고 ,파생클래스에서 abstract 한정자가 달린 것을 모두 재정의 해야함. => Interface는 abstr..
GridView에서 특정 Data를 Binding하려면 그리드뷰에 DataBindings -> 고급 DataSource로 변경하고 바인딩할 데이터와 업데이트 모드를 설정한 다음 바인딩 해주면 해당 Data로 바인딩되어 Grdview에 자동적으로 출력한다. ※ List는 최초 한번만 GridView에 업데이트 되고 ReBinding하여도 Update되지 않음 BindingList 를 써야 한다. >
Dictionary 형태로 쓰게되는데 Key값으로 Loop(반복문)를 돌리고 해당Key만 삭제하면 된다. foreach(string sKey in Dictionary.Keys.ToList()){ // Dictionary.Keys[sKey] == value;
개체는 다형성이므로 기본 클래스 형식의 변수는 파생 형식을 가질 수 있습니다. 파생 형식의 메서드에 액세스하려면 값을 파생 형식으로 다시 캐스팅해야 합니다. 그러나 이러한 경우 단순한 캐스팅을 시도하려면 이 throw될 수 있는 위험을 감수해야 합니다. 이 때문에 C#은 is 및 as 연산자를 제공합니다. 이러한 연산자를 사용하면 예외를 throw시키지 않고 캐스트 성공 여부를 테스트할 수 있습니다. 일반적으로 캐스트가 성공하면 실제로 캐스트 값을 반환하는 as 연산자가 훨씬 효율적입니다. is 연산자는 부울 값만 반환합니다. 따라서 이 연산자는 개체 형식을 결정하고 실제로 캐스트하지는 않는 경우에 사용할 수 있습니다. as를 사용했을때 int, double, float등에 Null값을 넣을수 없지만in..
dgv.Columns[index].Frozen = true; 가장좌측에 이름이 있고 스크롤했다면 어떤건지 파악하기가 어렵지만Frozen하면 고정되기때문에 파악이 쉬움. dbView.Columns[index].DividerWidth = 수치;index이전과 이후 사이의 구분자가 커져서 구분하기가 쉬워짐.
(지정한Enum명)Enum.ToObject(typeof(지정한Enum명), Index);
컬럼헤더에 체크박스를 추가하고, 이벤트를 추가했다면체크박스 이벤트에foreach (DataGridViewRow dgvRow in 그리드뷰네임.Rows){ dgvRow.Cells["헤더네임"].Value = ((CheckBox)sender).Checked;} 하게되면 선택한 경우 SelectAll또는 DeSelectAll이 된다 하지만, 체크박스에 EditBegin상태가 유지되고있다면체크값이 변하지 않는다. 그리드뷰네임.EndEdit(); EndEdit를 해서 Edit모드를 종료 한 후 위 코드를 사용하면 정상적으로모든 체크박스가 바뀐다.
DataGridView의 이벤트중 CellPainting 나 Load이벤트에 if (e.ColumnIndex == 0 && e.RowIndex == -1) { e.PaintBackground(e.ClipBounds, false); Point pt = e.CellBounds.Location;the cell int nChkBoxWidth = 15; int nChkBoxHeight = 15; int offsetx = (e.CellBounds.Width - nChkBoxWidth) / 2; int offsety = (e.CellBounds.Height - nChkBoxHeight) / 2; pt.X += offsetx; pt.Y += offsety; CheckBox cb = new CheckBox(); cb.S..
DataGridVeiw이벤트에 EditingControlShowing추가e.Control.KeyPress이벤트 연결 KeyPress와 연결한 함수에서 if (((DataGridViewTextBoxEditingControl)sender).Text.Length >= 제한할 길이 수 && ((DataGridViewTextBoxEditingControl)sender).SelectedText.Length