본문 바로가기
반응형

컴퓨터/C#90

C# TransparencyKey 해제 TransparencyKey에서 우클릭하여 다시 설정을 선택하면 TransparencyKey가 초기화 되어 투명이 적용되지 않는다. 2020. 7. 30.
C# 폼 투명하게 만들기 1. TransparencyKey Form 속성에서 BackColor와 같은 색을 TransparencyKey의 색으로 지정하면 폼의 배경이 투명하게 된다. 이 때 테두리는 투명해지지 않는다. TransparencyKey를 리셋하기 위해서는 우클릭하여 다시 설정을 선택한다. 2. Opacity 속성 Form 속성의 Opacity의 값을 0~100% 범위로 설정하면 윈도우 전체가 투명해진다. 코드에서 사용할 때는 Form.Opacity 값을 0~1.0 범위로 소수점으로 줘야 한다. TransparencyKey와 Opacity를 함께 사용하지 않도록 한다. ※ Opacity : 불투명함 2020. 7. 30.
C# 디버깅 실행 중 편집하기 디버깅 실행 중 코드를 편집하기 위해서는 다음 그림과 같이 옵션에서 '편집하며 계속하기 사용'을 체크 해제한다. 2020. 7. 26.
C# 개요 접기, 펼치기 Ctrl 키를 누른 상태에서 M을 두번 누르면 현재 선택된 부분의 접히거나 펼쳐진다. 전체를 접히게 하려면 Ctrl + A로 전체를 선택하고 Ctrl + M을 2번 누른다. 메뉴의 편집-개요에서 개요 확장/축소을 선택해도 된다. 2020. 5. 26.
C# Hello World 프로그램 C#으로 Hello World 프로그램을 작성하는 과정은 아래 3분짜리 동영상에 나와있다. 2020. 5. 26.
C# 특징 C#은 씨샵이라고 읽는다. C#은 C++과 Java의 영향을 많이 받은 언어이다. C#으로 만든 프로그램은 Java의 자바 가상머신과 비슷하게 .NET Framework (닷넷프레임워크)이라는 가상머신 위에서 동작한다. 현존 언어 중 가장 완성도가 높은 언어이다. C#을 사용하다가 안드로이드의 Java를 사용해보면 C#이 얼마나 잘 만들어진 언어인지를 실감할 수 있다. 2020. 5. 26.
Visual C++와 C# 중 어느 것을 배우는 것이 좋을까? Visual C++와 C# 을 한번도 사용해보지 않은 사람이 C++ 또는 C#을 배우려고 할 때 어느 것을 배우는 것이 좋을까? C#은 C++에 비해 사용하기가 매우 쉽고 배우는데 시간이 훨씬 적게 걸린다. 또한, C#은 C++에 비해 화면 디자인을 쉽게 구현할 수 있기 때문에 디자인이 더 좋은 프로그램을 더 빨리 개발할 수 있다. C#은 C++보다는 Visual Basic에 더 가깝다. 하지만, C#은 대부분 윈도우에서만 사용할 수 있는 언어로 Linux나 다른 플랫폼에서는 사용할 수 없는 언어이다. 이에 비해 C++은 다른 플랫폼에서도 사용하는 범용 언어이기 때문에 C++을 배우면 다른 곳에서도 사용할 수 있는 장점이 있다. 멀티 플랫폼을 지원하는 오픈 소스들은 대부분은 C++이나 Java로 작성되어.. 2020. 5. 26.
C# 시리얼 통신 프로그램 시리얼 통신을 구현하기 위해 컨트롤을 윈도우에 추가하여 하는 방법이 있고 다음과 같이 직접 코딩하는 방법도 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 using System; using System.IO.Ports; // 객체를 생성한다. SerialPort com = new SerialPort(); // 시리얼 포트를 설정한다. com.PortName = "COM1"; com.BaudRate = 9600; com.DataBits = 8; com.Parity = Parity.None; com.StopBits = StopBits.One; // 시리얼 포트를 연다. com.Open(); // 시리얼 포트에서 값을 읽는다. strin.. 2020. 4. 28.
C# Delegate 예제 Delegate (데리게이트)는 대리자라는 뜻으로 C의 함수 포인터와 비슷하다. 함수 포인터를 사용하여 함수의 인자로 함수 포인터를 전달하듯이 Delegate로 함수를 전달할 수 있다. Delegate를 사용하는 방법은 다음과 같다. 1. Del이라는 Delegate을 선언한다. 2. 전달한 함수 Fun1을 만든다. 3. Delegate 생성 4. 함수를 전달 받는 함수 Fun2를 만든다. 5. 함수 Fun1을 Fun2의 인자로 전달한다. // 1.선언 public delegate void Del(string text); // 2.함수 생성 public static void Fun1(string text) { Console.WriteLine(text); } // 3.Delegate 생성 Del h = F.. 2020. 4. 24.
C# foreach 사용법 C#에서 foreach는 다음과 같이 사용한다. int[] buf = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; foreach (int i in buf) { print(i); } 위 코드는 C에서 다음과 같은 코드와 동일하다. int[] buf = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; for (int b=0; b 2020. 4. 23.
C# 배열 C에서 배열은 다음과 같이 사용한다. int Buf[10]; C#에서 1차원 배열을 사용하는 방법은 다음과 같다. 배열의 모든 데이터는 0으로 초기화 된다. int[] Buf = new int[10]; 1차원 배열을 초기화하는 방법은 다음과 같다. int[] Buf = new int[] {1,2,3,4,5,6,7,8,9,10}; int[] Buf = {1,2,3,4,5,6,7,8,9,10}; C#에서 2차원 배열은 다음과 같이 사용한다. int[,] Buf = new int[10,5]; 2차원 배열을 초기화하는 방법은 다음과 같다. int[,] Buf = new int[,] {{1,2},{3,4},{5,6}}; int[,] Buf = {{1,2},{3,4},{5,6}}; C#에서 3차원 배열은 다음과 같.. 2020. 4. 23.
C# combobox 높이 조절이 잘 안될때 C#에서 combobox 높이는 Height 변수로 조절한다. combobox 높이가 정확하게 되지 않고 조금씩 오차가 발생할 때는 combobox의 Integral height 특성이 True로 되어 있는지 확인하고 False로 변경한다. 2020. 3. 7.
C# 다른 프로그램에 마우스 클릭 이벤트 발생시키기 다음과 같이 선언한다. [System.Runtime.InteropServices.DllImport("user32.dll")] static extern bool SetCursorPos(int x, int y); [DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)] public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo); private const int MOUSEEVENTF_LEFTDOWN = 0x02; private const int MOUSEEVENTF_LEFTUP =.. 2019. 12. 25.
c# 키보드 입력 제어 키보드 입력을 받았을 때 입력값에 따라 처리하는 방법은 다음과 같다. private void listView1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Delete) { [키보드 동작 코드] e.Handled = true; } } 윈도우 마다 키보드의 기본 동작이 있는데 e.Handled = true로 해야 사용자가 정의한 동작과 중복해서 실행되지 않는다. 2019. 10. 29.
C# 외부 프로그램 실행 Exe 파일 실행 또는 파일과 연결된 프로그램 실행 Process p = Process.Start("c:\\prog.exe"); Process p = Process.Start("c:\\memo.txt"); Process p = Process.Start("www.google.com"); 2019. 10. 29.
C# Form의 모든 Control 제어 Form의 모든 Control 제어 foreach (Control x in this.Controls) { if (x is TextBox) { ((TextBox)x).Text = ""; } } foreach ( TextBox tb in this.Controls.OfType()) { tb.Text = ""; } 2019. 10. 29.
C# CPU 사용량, 메모리 용량 getCpuUsage 함수는 CPU 사용량을 스트링으로 반환한다. getAvailableRAM 함수는 메모리 사용량을 스트링으로 반환한다. PerformanceCounter cpu; PerformanceCounter ram; cpu = new PerformanceCounter("Processor", "% Processor Time", "_Total"); ram = new PerformanceCounter("Memory", "Available MBytes"); public string getCpuUsage() { return cpu.NextValue().ToString()+"%"; } public string getAvailableRAM() { return ram.NextValue().ToString()+.. 2019. 10. 29.
C# Mutex 사용법 Mutex를 사용하는 기본 방법은 다음과 같다. static Mutex mtx = new Mutex(); if (mtx.WaitOne(1000)) { mtx.ReleaseMutex(); } mtx.ReleaseMutex(); mtx.Dispose(); Mutex를 사용한 후에는 Dispose로 삭제해야 한다. 또는 using을 사용할수도 있다. (@) ReleaseMutex는 Mutex를 얻은 쓰레드내에서 실행해야 한다. ☞ 상호배제 2019. 8. 5.
C# UDP 프로그램 UDP 프로그래밍은 TCP에 비해 매우 간단하다. UDP는 서버 클래스가 없고 UdpClient 클래스를 서버에도 사용한다. 사용되는 using 문 using System.Net; using System.Net.Sockets; UDP 수신 UDP를 수신하는 방법은 다음과 같다. UdpClient listener = new UdpClient(80); IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, 80); byte[] receive_byte_array; if (listener.Available > 0) { receive_byte_array = listener.Receive(ref groupEP); } listener.Receive 함수는 데이터를 수신할 때까지 B.. 2019. 7. 16.
[C#] 자원 관리 - Managed와 Unmanaged 차이 C#의 자원은 크게 Managed Resource와 Unmanaged Resource로 나눌 수 있다. Managed Resource C#에서 Managed Resource는 GC (Garbage Collector)에 의해 자동으로 자원이 해제된다. C++에서는 new로 만든 변수를 delete 하지 않으면 메모리 릭이 발생하지만 C#에서는 GC가 자동으로 메모리를 해제한다. Unmanaged Resource Unmanaged Resource는 사용자가 직접 자원을 해제해야 한다. Unmanaged Resource는 대부분 C# 내부가 아닌 윈도우에서 사용하는 자원이다. Unmanaged Resource는 Dispose나 using으로 자원을 해제한다. 자원을 해제하지 않으면 윈도우에서 사용하는 자원이 .. 2019. 7. 13.
C# 다른 프로그램 실행하기 C#에서 다른 프로그램을 실행하고 결과값을 받는 방법은 다음과 같다. void MyMethod() { Process process = new Process(); process.StartInfo.FileName = "c:\\program_name.exe"; process.StartInfo.Arguments = ""; process.StartInfo.WindowStyle = ProcessWindowStyle.Normal; process.StartInfo.CreateNoWindow = true; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectSta.. 2019. 7. 4.
C# using 사용하는 이유 using 문을 사용하면 using 문단을 빠져나올 때 리소스의 Dispose가 자동으로 실행한다. using을 사용하면 try에서 예외가 발생할 때도 Dispose가 실행된다. Font를 사용한 후에는 Dispose를 해야 하지만 다음과 같이 using을 사용하면 따로 Dispose 하지 않아도 된다. using (var font = new Font("Arial", 10.0f)) { [여기서 font 사용] } 2019. 7. 4.
C# 다른 프로그램 제어 다른 프로그램의 윈도우 핸들 hWnd을 알 때 그 핸들로 윈도우를 닫거나 최소화하거나 복구하는 메세지를 보내는 코드는 다음과 같다. static int WM_SYSCOMMAND = 0x0112; static int SC_CLOSE = 0xF060; static int SC_MINIMIZE = 0xF020; static int SC_RESTORE = 0xF120; SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0); SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0); SendMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0); 화면 보호기 실행하는 코드는 다음과 같다. static int WM_SYSCOMMAND.. 2019. 6. 26.
C# 프로그램 중복실행 방지 동일한 프로그램을 실행할 때 2개 이상이 실행되지 않고 항상 한번만 실행하기 위해서는 다음과 같은 2가지 방법이 있다. 1. Mutex를 이용한 방법 Program.cs에서 다음과 같이 수정한다. Mutex를 이용하여 프로그램 실행 여부를 판단하다. appGuid는 Mutex에서 사용되며 다른 프로그램과 중복되지 않도록 아무 문자를 집어넣으면 된다. static class Program { /// /// 해당 응용 프로그램의 주 진입점입니다. /// [STAThread] static void Main() { using (Mutex mutex = new Mutex(false, "Global\\" + appGuid)) { if (!mutex.WaitOne(0, false)) { MessageBox.Show(.. 2019. 6. 26.
C# 프로그래밍 Form 닫기 this.Close(); Form 크기, 위치, 상태 this.Size this.Location this.WindowState MDI Child Form 열기 Form2 newMDIChild = new Form2(); newMDIChild.MdiParent = this; newMDIChild.Show(); 스트링을 구분 기호로 분리, 라인 분리 string s = " ~~~~~~\r\n~~~~~\r\n"; string[] a = s.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (String item in a) { } 배열 선언, 초기화 // 배열 선언 int [] a = new int[10]; int.. 2019. 6. 15.
C# listView 사용법 listView 전체 아이템의 개수count = listView1.Items.Count; 전체 아이템 삭제 listView1.Items.Clear(); 아이템 추가listView1.Items.Add("Test"); 아이템 삽입ListViewItem item = new ListViewItem("Test");listView1.Items.Insert(index,item); 선택된 아이템의 인덱스int index = listView1.SelectedIndices[0]; 선택된 아이템의 문자s = listView1.SelectedItems[0].SubItems[0].Text; 선택된 아이템ListViewItem item = listView1.SelectedItems[0]; 특정 인덱스의 아이템 삭제listView.. 2019. 6. 12.
C# listBox 사용법 listBox에 아이템 추가 listBox1.Items.Add("Item1"); listBox1.Items.Add("Item2"); listBox1.Items.Add("Item3"); 특정 Index의 데이터 삭제 listBox1.Items.RemoveAt(idx); 특정 Index에 데이터 삽입 listBox1.Items.Insert(idx,"ItemA"); listBox의 아이템 개수 len = listBox1.Items.Count; 특정 Index의 데이터 얻기 string s = listBox1.Items[idx].ToString(); 현대 선택된 Index의 데이터 얻기 string s = listBox1.Text; 현재 선택된 Index 얻기 int idx = listBox1.SelectedI.. 2019. 6. 7.
C# MDI 자식 폼 만들기 MDI 윈도우폼 속성에서 IsMdiContainer을 true로 하면 MDI (Multiple Document Interface)를 사용할 수 있다. 자식 폼 열기부모 폼 Form1에서 자식 폼 Form2를 여는 방법은 다음과 같다. Form2 newMDIChild = new Form2(); newMDIChild.MdiParent = this; newMDIChild.Show(); 자식 폼에서 부모 폼 변수 사용자식 폼 Form2에서 Form1의 변수 Form1_var를 사용하기 위한 코드는 다음과 같다. Form2_var =((Form1)MdiParent).Form1_var; 모든 자식 폼 닫기모든 자식 폼들을 닫는 코드는 다음과 같다. foreach (Form frm in this.MdiChildren.. 2019. 6. 5.
C# 시리얼 통신 C# 프로그램밍은 Visual Basic과 비슷하다. C#에는 SerialPort 컨트롤이 기본으로 내장되어 있어 매우 쉽게 시리얼 통신을 구현할수 있다. 1. 도구상자에서 SerialPort 컨트롤을 추가한다. (☞ SerialPort 컨트롤이 없을 때) 2. SerialPort 컨트롤을 클릭하여 속성을 확인한다. 속성창에서 직접 BaudRate, COM 포트 등을 설정할 수도 있다. 2. COM 포트를 연다. Form.cs의 초기화 메쏘드 또는 버튼 클릭 메쏘드 등 적당한 위치에 다음 코드를 삽입한다. serialPort1.PortName = "COM1"; serialPort1.BaudRate = 9600; serialPort1.DataBits = (int)8; serialPort1.Parity = .. 2016. 4. 3.
C# 화면 색 바꾸기 메뉴의 도구 - 옵션 메뉴를 선택한다. 환경 - 색 테마를 변경하면 전체 색이 변한다. 환경 - 글꼴 및 색에서 세부항의 색을 지정한다. 아래 그림과 같이 주석의 항목 전경을 변경하면 주석 색이 변한다. 2016. 2. 27.
반응형