본문 바로가기

반응형

hayee Study/코딩_c#

[C#] winform 화면 하얘지는 증상. 안녕하세요 hayee 입니다. 아무 동작 없이 오랜 시간 실행되고 있는 프로그램을 오랜만에 건들였더니 윈도우 화면이 하얘지는 버그가 발생하였습니다. 같이 동작하는 프로그램들은 문제가 없었고, 윈도우도 특별한 것이 없었는데, 오래동안 아무 동작이 없는 상태에서 한번씩 포커스를 줄 때마다 아래와 같이 UI가 하얘졌습니다. ▷해결 방법 (현재 진행중!!) 현재까지 파악한 건 다른 프로그램에서 핸들을 가지고 프로그램을 화면 맨 앞으로 가져올 때 간헐적으로 발생한다는 것이다. hwd->BringWindowToTop(); hwd->ShowWindow(SW_MAXIMIZE); hwd->SetForegroundWindow(); 우선 해당 프로그램이 활성화 될 때 포커스를 주어 OnPaint 함수를 한번 더 호출하는 식.. 더보기
[C#] 지정한 키가 사전에 없습니다. (MYSQL) 안녕하세요 hayee 입니다. MYSQL 설치 후 C# 기반 Winform 프로그램을 실행시키려고 했지만 '지정한 키가 사전에 없습니다' 라는 로그와 함께 MYSQL 커넥션 실패가 발생하였다. ▷ 해결 방법 (현재 진행중!!) 정확한 원인은 아직 모르겠으나, 기존 MYSQL 과 새로 세팅한 PC의 MYSQL 버전이 달라서 발생한 것 같다. 이전 버전으로 재 설치 후 증상은 발견되지 않았다. 구글링으로 검색 했을 때 SQL Server 2016 서비스팩을 설치하면 해결된다는 Microsoft 커뮤니티의 글을 보았지만 위의 방법으로 해결하였기 때문에 테스트를 따로 해보진 않았다. # 틀린 부분이 있다면 댓글 부탁드립니다. # # 댓글 달아주시면 늦게라도 블로그 방문하도록 할게요! 감사합니다. # 더보기
[C#] Invalid default value for 'date_dt' (MYSQL) 안녕하세요 hayee 입니다. 오늘도 언제나 문제상황과 버그가 발생하였습니다. 자꾸 접해도 익숙하지 않아 정리해 보았습니다. ▷ 문제 발생 이전과 다른 버전의 MYSQL 을 설치해서 그런지, 백업 받은 .sql 을 가져오기를 수행하고 싶었지만 Invalid default value for 'date_dt' 에러가 발생하였다. 프로그램과 테이블 구조 변경은 없었으며 차이점은 DB의 버전 뿐 이었다. ▷ 해결 방법 쿼리로 테이블을 생성하기 전에 SQL 편집기에 쿼리와 함께 아래의 문장을 포함하여 실행시켰다. SET sql_mode = ''; mysql 시스템 변수를 변경하여 에러가 발생하는 것은 막았지만, 이것도 정확한 원인을 모르기 때문에 MYSQL 버전을 동일하게 바꾸는 방향으로 하였다. # 틀린 부분이.. 더보기
[C#] DataGridview Row 선택 안되도록 하는 방법 안녕하세요 hayee 입니다. DataGridView 컨트롤이 사용된 폼 로드 시 첫 번째 Row 에 포커스되어 한 행이 클릭한 것처럼 표시가 된 경우가 있었습니다. DataGridView 기본값은 첫번째 열의 첫번째 행이기 때문에 발생한 것이고 현재 활성화된 셀 속성을 null 로 설정하여 이를 해결하였습니다private void Form1_Load(object sender, EventArgs e) { dataGridView1.CurrentCell = null; } # 예제 소스 등 오류가 있다면 댓글 남겨주세요 수정하겠습니다. 감사합니다! # 더보기
[C#] 메시지박스 (MessageBox) 안녕하세요 hayee 입니다. 윈폼에서는 메시지 박스가 있습니다. 이 클래스는 말 그대로 사용자에게 메시지를 보여 주기 위한 창입니다. 저는 주로 사용자에게 특정 기능들을 수행하기 전 알림 및 경고용으로 많이 사용하고 있고, 프로그램 종료 하기 전, 사용자에게 해당 동작을 진짜 수행 할 것인지 체크할 때에도 메시지박스를 사용합니다. 메시지 박스는 모달 창으로 생성되며 모달 & 모달리스에 대한 설명은 아래 글을 참조하시면 좋을 듯 싶습니다. https://hayee.tistory.com/12 [C#] show, showDialog (모달리스와 모달 차이점) 안녕하세요 hayee 입니다. 윈폼은 아래와 같이 모달과 모달리스로 생성할 수 있습니다. 저는 주로 알림창, 응답을 받아와야 할 경우에 모달로 생성하고.. 더보기
[C#] delegate (델리게이트) 안녕하세요 hayee 입니다. Delegate 란 대리자라고 부르며 매서드를 매개변수로 전달할 수 있고, 콜백함수로도 사용이 됩니다. ▷ 예제 소스 (1) namespace WindowsFormsApp1 { public partial class Form1 : Form { delegate void UpdateRichTextboxCallback(string text); public Form1() { InitializeComponent(); } public void UpdateText(string msg) { string DataMsg = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff: ") + msg; // 다른 스레드에서 RichTextBox 컨트롤에 접근할 경우 비동.. 더보기
[C#] Control 클래스 안녕하세요 hayee 입니다. 윈폼에 있는 컨트롤들의 옵션을 각각 변경할 수 있지만, 컨트롤이 많아지면 동일한 설정을 하는데 많은 번거로움이 따릅니다. 아래 소스코드 처럼 공통적으로 적용해야 하는 옵션들을 지정하면 소스 몇줄로 많은 번거로움을 해결할 수 있습니다. ▷ 소스 코드 (예시) // 컨트롤 중 버튼들의 커서 이미지를 Hand로 변경한다. private void InitControl() { foreach(Control ctrl in this.Controls) { if (ctrl is Button) { ctrl.Cursor = Cursors.Hand; } } } # 틀린 부분이 있다면 댓글 부탁드립니다. # # 댓글 달아주시면 늦게라도 블로그 방문하도록 할게요! 감사합니다. # 더보기
[C#] NaN, PositiveInfinity, NegativeInfinity 필드 처리 방법 안녕하세요. hayee 입니다. 오늘은 C# NaN, PositiveInfinity, NegativeInfinity 필드 처리에 대한 포스팅 입니다. 계산된 변수 값을 주기적으로 MYSQL INSERT 하는 로직을 구현 했었는데, 뜬금 없이 Nan 이란 필드가 나와서 당황한 적이 있었습니다. 그 때 이후로 변수에 있는 값을 사용할 때 예외처리 목적으로 NaN, PositiveInfinity, NegativeInfinity 필드 처리를 해주고 있습니다. 1. NaN 처리 방법. (예제) float nValue = 0 / 0.0f; if(float.IsNaN(nValue)) { Trace.WriteLine("지정된 값이 숫자가 아닙니다. (NaN)"); } else { Trace.WriteLine("지정된 .. 더보기

728x90
반응형