C#
-
C# 폼 캡처, 자식 폼 캡처닷넷/C# 2018. 7. 18. 09:53
아래 ScreenCaptureForm 메소드를 사용하면 쉽게 폼을 캡처 할 수 있다.아래 메소드를 사용할 때 폼의 시작위치와 폼 사이즈만 넘겨주면 되는 것이다.private void ScreenCaptureForm(Point _point, Size _size){ Rectangle rectangle = new Rectangle(_point, _size); Bitmap bitmap = new Bitmap(rectangle.Width, rectangle.Height); Graphics g = Graphics.FromImage(bitmap); g.CopyFromScreen(rectangle.Left, rectangle.Top, 0, 0, rectangle.Size); bitmap.Save(@"C:\test.pn..
-
C# goto문 작성방법닷넷/C# 2018. 6. 28. 17:01
goto는 프로그램의 흐름을 바꾸는 명령으로 어떤 상황일 때 코드의 특정부분으로 가서 동작하게끔 할 수 있습니다. 코드의 흐름을 비직관적으로 만들 수 있고, 디버깅과 유지보수를 어렵게 할 수 있으므로 goto문을 쓰지 않는 걸 권장 받아 왔고 그렇게 교육 받아 왔지만 잘 쓰면 약이고, 잘못 쓰면 독약인 것처럼 goto도 그러하기 때문에 현재 시점에서는 용도에 맞게, 의도에 맞게 잘 쓰면 아무런 문제도 되지 않습니다. 단, 이게 무슨 용도로, 의도로 쓰였는지 주석은 꼭 달아주도록 합시다! goto문 작성방법 1. 레이블(label)을 정의합니다. 레이블은 코드 내의 특정 위치를 식별하는 식별자입니다. 레이블은 콜론(:)으로 끝나는 형식으로 작성됩니다. 2. goto 키워드 뒤에 이동하려는 레이블 이름을 지..
-
C# SqlDependency 사용 중에...닷넷/C# 2018. 6. 21. 16:01
아래 사이트의 설명이 너무 좋으므로 따로 설명은 하지 않는다.http://www.csharpstudy.com/DevNote/Article/11 대신에 위 사이트 설명에서 추가하고 싶은 내용. [SQL] 문을 어떻게 써야하는지에 대한 몇가지 제약 조건들 중에 하나 1. where절이나 order by 등에 나오는 칼럼타입이 DateTime이면 invalid 뱉어냄.따라서 Convert(varchar(10), MachineTime, 120) 이런 식으로 칼럼 타입을 변경하여 쿼리를 짜야 한다.
-
C# 텍스트박스에 숫자만 입력되게 하기닷넷/WinForms 2018. 6. 7. 17:25
텍스트박스에서 키를 눌렀을 때 숫자만 입력되게 하는 방법. private void txtBox1_KeyPress(object sender, KeyPressEventArgs e){ //숫자만 입력되도록 필터링 if(!(char.IsDigit(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back))) //숫자와 백스페이스를 제외한 나머지를 바로 처리 { e.Handled = true; }} 출처: http://terrorjang.tistory.com/39 [개발자 공간]
-
C# DateTimePicker 기본값 설정하기닷넷/WinForms 2018. 3. 27. 10:01
dateTimePicker1.Value = new DateTime(int.Parse("년도"), int.Parse("월"), int.Parse("일")); 예제.1. 기본값을 현재 월의 5일로 설정(프로그램을 실행하면 dateTimePicker1은 항상 현재 월의 28일로 나오게.) dateTimePicker1.Value = new DateTime(int.Parse(DateTime.Now.ToString("yyyy") , int.Parse(DateTime.Now.ToString("MM") , 5); 2. 기본값을 현재의 다음 달의 말일-2 로 설정 (프로그램을 실행하면 dateTimePicker1은 항상 현재의 다음 달 말일-2 로 나오게.예를 들어 현재 2018년 3월 27일의 다음 달 말일-2는 20..
-
C# 바이너리 파일 읽기 (한글 포함)닷넷/C# 2018. 1. 9. 20:53
2017/05/26 - [프로그래밍/C#] - C# 바이너리 파일 읽기 및 클래스에 담기전에 포스팅한 것인데 이 방법으론 한글이 저장된 바이너리 파일은 인코딩할 수 없었다. 한글이 포함된 바이너리 파일 읽기 // StreamReader를 통해 바이너리 파일을 읽는다.// 이때 한글이 깨지지 않게 가져오려면 Encoding 코드 페이지는 949로 한다. using (StreamReader sr = new StreamReader(fname, Encoding.GetEncoding(949))){ string s = sr.ReadToEnd(); // 문자열을 쪼개서 배열에 담는다. // 정규식을 사용해도 될 것 같은데, 일단 바이너리 파일에서 불필요한 식별자들을 기준으로해서 쪼갬. string[] ss = s.S..
-
[개발중] 원격제어 프로그램 4프로젝트 2017. 11. 10. 17:56
저번에 클라이언트 프로그램에서 서버에 접속하면 대략적으로 서버 프로그램에 클라이언트 정보가 나올 수 있게 해놨다. 서버에서 Start 버튼을 눌러 클라이언트에서 접속하길 기다린다.그리고 클라이언트에 접속하면 클라이언트에서 넘긴 값을 dataGridView에 바인딩한다. 서버에서 프로세스 종료 명령을 받기 위해 Start(Stop) 버튼을 추가 하여 클라이언트 프로그램에 서버기능을 추가했다. 여기까지, 서버와 클라이언트 간에 서로 접속하는 것에는 문제가 없는 것으로 보인다. 서버에서 클라이언트에 실행 중인 프로세스를 중지할 수 있게 코딩했고,서버에서 프로레스 리스트에서 중지할 프로세스를 선택 하고 Connection 버튼을 누르면클라이언트 리스트에서 IP를 가져오고, string pp = dataGridV..
-
C# DataGridView를 Database에 동기화하는 방법 (InsertCommand, UpdateCommand, DeleteCommand 사용하기)닷넷/WinForms 2017. 10. 20. 09:12
DataGridView, RadGridView 등에서 데이터베이스에 있는 테이블을 그리드뷰에 바인딩하고 그리드뷰에서 데이터를 수정하거나, 추가하거나, 삭제하거나 할 때 각각 UpdateCommand, InsertCommand, DeleteCommand를 사용하면 그동안 써왔던, 익히 알고 있었을 ExecuteNonQuery 로 일일이 쿼리를 줘서 데이터베이스의 데이터를 변경하는 것보다 더욱 수월하게 작업을 할 수 있다. 그러니까, 그리드뷰에서 수정할 때마다 수정버튼을 누르거나, 추가할 때마다 추가버튼을 누르지 않아도 버튼은 마지막에 딱 한번만 누르면 데이터베이스에 그리드뷰에서 수정한 것이 그대로 수정이 되고, 추가한 것은 추가되고, 삭제된 것은 삭제된다. InsertCommand, UpdateComman..
-
C# AES 256 암호화와 복호화 코드닷넷/C# 2017. 9. 14. 14:23
#region 암호화 & 복호화 private string AESEncrypt256(string _text) { string Password = "jasmintime"; // 인증키 RijndaelManaged RijndaelCipher = new RijndaelManaged(); byte[] PlainText = Encoding.Unicode.GetBytes(_text); byte[] Salt = Encoding.ASCII.GetBytes(Password.Length.ToString()); PasswordDeriveBytes SecretKey = new PasswordDeriveBytes(Password, Salt); ICryptoTransform Encryptor = RijndaelCipher.Cre..
-
C# 현재 실행 중인 프로세스 목록닷넷/C# 2017. 9. 8. 10:25
string procName = string.Empty;foreach (System.Diagnostics.Process proc in System.Diagnostics.Process.GetProcesses()){ if (proc.MainWindowHandle != IntPtr.Zero) { if (proc.MainWindowTitle == "") continue; procName = string.Format("{0},{1}", procName, proc.MainModule.FileName); }} 이렇게 하면 프로세스의 파일 경로까지 다 나와서 프로세스 이름만 검출하려고 하는 경우엔문자열을 쪼개는 것이 좋겠다. string procList = string.Empty;string procName = str..
-
How to format a datetime with slash in C#닷넷/C# 2017. 9. 5. 15:13
Current Date and Time : 9 / 5, 2017 PM 3:00:00 yyyy : Year (2017) / yyy : Year (2017) / yy : year (17)MM : Month (09) / M (9)dd : Day (05) / d (5)HH : Hour (15) / hh : hour (03) / h : hour (3)mm : Minute (00) / m (0)ss : Second(30) Example: 1.DateTimePicker Formatting :dateTimePicker1.Format = DateTimePickerFormat.Custom; dateTimePicker1.CustomFormat = "yyyy-MM-dd"; => 2017-09-05 2.dateTimePick..
-
C# Local host 가져오기 (로컬 IP 주소 확인하기)닷넷/C# 2017. 8. 24. 17:54
using System.Net; using System.Net.Sockets; private string GetLocalIP() { string myIP = ""; IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress ip in host.AddressList) { if (ip.AddressFamily == AddressFamily.InterNetwork) { myIP = ip.ToString(); } } return myIP; }
-
C# CrossThread 오류가 발생할 때닷넷/WinForms 2017. 8. 7. 15:00
스레드로 작업을 돌리는 도중 CrossThread 오류가 날 때가 있다.그 이유는 스레드 간에 간섭이 일어났기 때문이다.프로그램이 실행될 때 눈에 보이는 전부가 이미 스레드 하나이다. 이걸 메인스레드라 부른다.(프로세스는 이미 스레드 하나를 가지고 있는 것임.) 그 이후에 우리가 추가적으로 작업할 때 스레드를 선언하여 사용하는데 (이하 A 스레드)A 스레드에서 메인스레드에 있는 작업들 가령 TextBox나 ListBox 같은 컨트롤에 데이터를 입력하게 되는 경우A 스레드에서 메인스레드로의 간섭이 일어나 CrossThread 오류가 나는 것이다. 이를 해결하려면 대리자(delegate)를 이용하면 된다. 다음은 리스트박스에 텍스트를 추가하는 델리게이트와 메소드이며 A 스레드 안에서 리스트박스에 텍스트를 추..
-
C# 네이버 블로그 파싱하는 방법닷넷/C# 2017. 7. 21. 16:22
진짜 네이버 블로그 소스는 프레임에 씌여있어서 네이버 블로그를 파싱하려면한 꺼풀 벗겨서 다시 한번 웹페이지를 불러와야한다. 1. 윈폼에 도구상자에서 WebBrowser 두 개를 놓는다. 2. 일반적인 네이버 블로그 url를 webBrowser1에 띄운다.webBrowser1.Navigate("http://blog.naver.com/freecat27"); 3. webBrowser1의 DocumentCompleted 이벤트에서 프레임에 씌여진 진짜 네이버 블로그 주소를 파싱하고, webBrowser2에 그 주소를 띄운다.private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e){ if (e.U..
-
C# 엑셀파일로 저장할 때 셀병합, 자동정렬, 선, 가운데 정렬닷넷/C# 2017. 6. 26. 18:18
C#에서 엑셀파일로 저장할 때 셀 병합, 자동정렬, 테두리 그리는, 가운데정렬 하는 방법 //소스코드 Excel.Range range = null; range = xlWorksheet.get_Range("A2", "I2"); // 범위지정 range.Merge(true); // 범위만큼 셀 병합 range.Font.Size = 14; // 글씨크기 range.Font.Underline = true; // 밑줄 range.Font.Bold = true; // 굵게 range = xlWorksheet.get_Range("A3", "I3"); // 새로 범위지정 range.Merge(true); // 범위만큼 셀 병합 // 새로 범위지정 후 range = xlWorksheet.get_Range("A3", "I..