IT정보공유/C#85 C# 단축키 사용을 위한 KeyPreview와 키조합 사용방법 C# 폼에서 단축키를 사용하고자 할 때는 Form 속성중에 KeyPreview 속성을 true로 설정해 줘야 합니다. TextBox 등의 컨트롤에 KeyDown 이벤트를 걸수 있지만, 컨트롤이 아닌 전체 폼 어디에서든 KeyDown 이벤트를 받기위한 설정입니다. 폼 단축키 사용 속성 - KeyPreview Frm.KeyPreview = true; 그리고 폼 KeyDown 이벤트 핸들러를 만들어주고 KeyEventArgs의 키코드값이 원하는 키 일때, 처리하는 프로세스를 추가 해주면 됩니다. 스페이스바를 눌렀을 때는 Delete() 함수를 호출하고, 쉬프트키 + 스페이스바키를 눌렀을 경우에는 MoveNext() 함수를 호출하는 기능입니다. private void Frm_KeyDown(object sende.. IT정보공유/C# 2020. 4. 28. 어셈블리가 필수 구성 요소로 표시되려면 강력하게 서명되어야 합니다. 갑자기 정상적으로 컴파일 되던 소스가 컴파일이 안되고 이상한 오류메세지가 발생했습니다. 프로젝트에서 OCX 컨트롤을 사용하고 있는데 해당 OCX 컨트롤 관련 dll에서 발생하는 오류메세지. 어셈블리가 필수 구성 요소로 표시되려면 강력하게 서명되어야 합니다. 필수 구성요소? 강력한 서명? 이게 도대체 무슨말인가 싶어서 OCX 참조도 지우고, 다시 참조시켜보고 인터넷을 검색해도 별로 자료도 안나오더라고요. 그래서 svn을 이용해 어떤 부분이 다른가 소스를 일일이 비교하다가 원인을 찾았습니다. C# Form 파일중에 폼디자인 관련 부분인 Form.Designer.cs 파일에 원인이 있었어요. InitializeComponent() 함수안 1줄이 사라졌습니다. Form designer.cs 소스 private .. IT정보공유/C# 2020. 4. 8. C# Byte <-> String, Byte <-> int 상호변환 프로그래밍을 하다보면 바이트 배열을 스트링으로 바꾼다든가 2바이트 배열을 integer 로 바꾸든가 하는 변환 작업이 필요할 때가 있습니다. 어떻게 바이트배열을 문자로 바꾸는지, 또 바이트 배열을 숫자로 바꾸는 방법 그리고 16진수 변환에 대해 알아보도록 하겠습니다. 바이트배열이 ASCII 문자열인 경우 public string ByteArrayToASCII(byte[] byteArray, int startidx, int length) { string sRet = ""; sRet = Encoding.ASCII.GetString(byteArray, startidx, length); return sRet; } 1byte 를 16진수(HEX)로 변환 public string ByteToString(byte o.. IT정보공유/C# 2020. 3. 24. C# DevExpress XtraChart 3D Pie 차트 그리기 C# Winform 응용프로그램을 개발할 때 많이 사용되는 상용 컴포넌트인 데브익스프레스 (DevExpress)의 XtraChart 컨트롤을 이용한 원형차트, 파이차트 그리는 샘플코드입니다. 아래와 같은 1위 부터 5위까지의 알림 건수를 가지고 차트를 만들어 볼 겁니다. DevExpress XtraChart Pie3D 위 차트를 Pie 3D 차트라고 부릅니다. 파이처럼 생겼고 입체감을 더했기 때문이에요. 그건 뭐 중요하지 않습니다. DevExpress 차트 컨트롤을 우선 폼위에 기본적으로 얹어만 놓고 아무런 옵션도 주지 않은 채 Series는 코딩을 통해 동적생성 하는 샘플 코드입니다. chartTop5.DataSource = dtTop5; //dtTop5 는 위 표에서 나온 데이터를 담고 있는 Data.. IT정보공유/C# 2020. 3. 6. C# 타이머를 이용한 오래된 파일 삭제 (로그 삭제) 특정 디렉토리에 있는 파일중에 생성된 날짜를 검색하여 일정기간이 지난 파일들을 삭제하는 함수입니다. 일자별로 쌓이는 로그파일이나 특정 목적때문에 생기는 임시파일들을 주기적으로 삭제할 필요가 있을때 사용합니다. 타이머를 이용한 주기적인 파일 삭제 타이머 주기는 1시간이든 2시간이든 1일이든 필요한 만큼 tmDeleteOldFile 타이머의 Interval을 지정해줍니다. //타이머 이벤트 private void tmDeleteOldFile_Tick(object sender, EventArgs e) { tmDeleteOldFile.Enabled = false; //타이머 비활성화 try { //FolderName 이라는 폴더에 7일이전에 생성된 파일은 삭제한다. deleteOldFiles("FolderNam.. IT정보공유/C# 2020. 1. 23. c# json 파싱을 클래스 객체화하기 (serialize와 Deserialize) 요즘 xml 보다 json이 대세인것 같습니다. 몇 년 전만해도 xml도 참 많이 이용했었는데 현재는 거의 압도적으로 json을 많이 사용하고 있습니다. json 문자열을 파싱하는 방법 우선은 json 파싱을 할 라이브러리를 준비해야 하는데요. 우리는 가장 많이 사용되고 있는 json parser를 사용할 거에요. 실무에서 엄청 많이 사용되는 Newtonsoft.Json 을 사용하도록 할겁니다. 비주얼스튜디오에서 새로운 프로젝트를 하나 만들고, 프로젝트 -> NuGet 패키지 관리 메뉴로 이동합니다. 누겟 패키지 관리자에서 찾아보기를 누르고 json을 입력하여 Newtonsoft.json 최신버전을 설치해 주시고요. 설치가 완료 되었으면 json 파싱을 위한 준비는 끝난거에요. 아래의 설명을 참고하셔서 .. IT정보공유/C# 2019. 12. 23. C# MSSQL SqlConnection 및 SqlDataAdapter 샘플소스코드 C#을 이용한 MSSQL Connection String 작성 예제와 SqlDataAdapter를 이용해 데이터에 접근 하는 샘플소스코드입니다. string strConn = string.Format("server={0};database={1};user id={2}; password={3}", tbIP.Text + "," + tbDBPort.Text, "DBMASTER", tbUserID.Text, tbUserPassword.Text); DataSet ds = new DataSet(); SqlConnection con = new SqlConnection(strConn); SqlDataAdapter ad = new SqlDataAdapter("select * from areadef order by id a.. IT정보공유/C# 2019. 12. 12. C# yyyymmddhhmmss 문자열을 날짜포맷(DateTime)으로 변환하는 함수 일반적으로 C#에서 문자열을 DateTime 형식으로 변환할때 많이 쓰는 함수는 DateTime.Parse 함수입니다. 하지만 yyyymmddhhmmss 형태로 저장된 문자열을 DateTime.Parse() 함수를 이용해서 DateTime 으로 변환하려고 하면 오류가 발생합니다. 그럴때는 DateTime.ParseExact 함수를 이용해서 변환할 수 있습니다. 총 3개의 오버라이드 함수 원형이 있습니다. public static DateTime ParseExact(string s, string format, IFormatProvider provider); public static DateTime ParseExact(string s, string format, IFormatProvider provider,.. IT정보공유/C# 2019. 11. 18. C# 데브익스프레스(DevExpress) TreeList DB에서 불러오기 데브익스프레스(DevExpress) 컴포넌트를 사용하여 아래와 같은 형태의 트리를 만들건데, 데이터베이스에서 읽은 데이터테이블을 기준으로 루프 돌면서 루트트리노드와 차일드트리노드 등을 생성하는 샘플 코드 입니다. // - 공원장비 // - 경마공원 // - 대관람차 // - 바이킹 // - 죠스 // - 서울대공원 // - 다람쥐통 // - 범퍼카 DevExpress.XtraTreeList 컨트롤의 name은 trEquip 입니다. 별도의 UI 옵션 조정에 대한 내용은 설명하지 않았습니다. DevExpress.XtraTreeList 를 이용하는 소스 샘플입니다. private void LoadDBTree() { string sQuery = @"select * from TreeTable"; DataTabl.. IT정보공유/C# 2019. 11. 14. C# OpenCV EmguCV 문제점 OpenCV Library를 C#에서 쉽고 편리하게 사용할수 있도록 만들어진 크로스 플랫폼 래퍼클래스인 EmguCV를 한동안 계속 테스트를 진행했었습니다. 개인적으로 테스트를 하다가 발견된 문제점들 몇가지를 기록해둘까 합니다. 제가 테스트를 진행했던 부분은 RTSP Protocol을 이용하여 IP Camera를 다중접속 하여 CMS 소프트웨어처럼 IP Camera의 Live Video를 출력하고 싶었습니다. 결과적으로는 여러가지 문제점을 발견하고, 어찌됐든 현재까지는 문제가 발생하지 않고 있으나 추후에 EmguCV Version Update를 진행했을 때 문제가 발생할 수 도 있을 것 같긴합니다. (FFMpeg 영상 디코딩 등의 문제로) 최신버전 EmguCV 4.x 멀티쓰레딩 관련 문제.. EmguCV의.. IT정보공유/C# 2019. 11. 4. C# EmguCV 글자 출력 함수 PutText 사용하기 오늘은 EmguCV 함수를 이용해 글자를 출력하는 방법을 알아볼건데요. 제가 그동안 샘플코드로 작성했던 내용들 처럼 CCTV 카메라에 RTSP Protocol을 이용해서 영상 스트리밍을 화면에 출력하다가 카메라 연결이 끊어졌을 때 "Disconnected", 카메라에 다시 연결을 시도 할때는 "Retry connect" 메세지를 출력해줄 용도로 만들었습니다. [IT정보공유/C#] - C# EMGUCV를 이용한 RTSP Stream 영상재생 샘플코드 C# EMGUCV를 이용한 RTSP Stream 영상재생 샘플코드 요즘 계속 EMGUCV 관련 포스트를 하고 있네요. 실무에서 개발 진행 중인 부분이다 보니 아무래도 테스트를 많이 하고 있어서 그런것 같습니다. 영상처리 라이브러리인 OpenCV를 C#에서 사용.. IT정보공유/C# 2019. 10. 17. C# EMGUCV를 이용한 RTSP Stream 영상재생 샘플코드 요즘 계속 EMGUCV 관련 포스트를 하고 있네요. 실무에서 개발 진행 중인 부분이다 보니 아무래도 테스트를 많이 하고 있어서 그런것 같습니다. 영상처리 라이브러리인 OpenCV를 C#에서 사용하기 쉽도록 Wrapper Class를 제공해 주는 EMGUCV v4 최신버전을 이용한 샘플코드입니다. UserControl로 만들어진 샘플 코드이며 급하게 급조된 테스트 코드이기 때문에 예외처리같은것은 별로 신경안썼습니다. 적당히 감안하시고 참고하시고요. EmguCV에서 영상을 가져오는 방법 2가지 VideoCapture의 이벤트 핸들러 ImageGrabbed 이용 하는 방법 타이머나 쓰레드를 이용해서 원하는 타이밍에 QueryFrame()함수를 이용하는 방법 이 소스코드는 VideoCapture의 이벤트 핸들러.. IT정보공유/C# 2019. 10. 16. 이전 1 2 3 4 5 6 ··· 8 다음 💲 추천 글 반응형