C#
-
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..
-
C# 리소스 파일 관련 참고 자료 사이트 링크닷넷/C# 2017. 5. 30. 16:01
1. 리소스에 포함된 데이터 읽고 쓰기http://devilchen.tistory.com/4720 2. MSDN : 데스크톱 응용 프로그램용 리소스 파일 만들기https://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwiIg4-M-5bUAhWCUZQKHcWAA5QQFggkMAA&url=https%3A%2F%2Fmsdn.microsoft.com%2Fko-kr%2Flibrary%2Fxbx3z216(v%3Dvs.110).aspx&usg=AFQjCNE_5T_aJ7zqAYUAFJAVOw0jQIr0wQ&sig2=rR-FtEw5kGJR6uowJlB8BA
-
C# DataGridView 데이터 엑셀파일에 저장 using oledb닷넷/C# 2017. 5. 24. 13:43
엑셀 라이브러리 참조없이 OleDb를 이용한 방법으로 DataGridView의 데이터를 엑셀로 출력하는 방법이다.이때, 엑셀파일을 File 을 이용해 생성하면 제대로 생성되지 않아 사용할 없다.따라서 소스를 보면 알겠지만 엑셀파일 하나를 복사해서 거기에 데이터를 저장하는 편법을 이용했다. OleDbConnection conn = null; try { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Excel File(.xls)|*.xls"; if (sfd.ShowDialog() == DialogResult.OK) { FileInfo fi = new FileInfo(sfd.FileName); if (!fi.Exists) { File.Copy(Applic..
-
C# 엑셀파일 가져오기 using OleDb닷넷/C# 2017. 5. 22. 09:57
OleDb를 이용하면 컴퓨터에 엑셀이 설치되어있지 않아도, 엑셀 라이브러리를 참조하지 않아도엑셀의 데이터를 가져올 수 있다.만약 안 된다고 하면 provider가 설치되어 있지 않아 그런 것이니 AccessDatabaseEngine을 설치하면 된다. using System.Data.OleDb; private DataTable GetSheet(string excelPath) { string connstring = string.Empty; if (excelPath.IndexOf(".xlsx") > -1) // 확장자에 따라서 provider 주의 { connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelPath + ";Extended Pr..
-
C# 프로그램 실행 중복방지닷넷/WinForms 2017. 4. 26. 17:24
Program.cs 파일에int thisID = System.Diagnostics.Process.GetCurrentProcess().Id; // 현재 기동한 프로그램 id // 실행 중인 프로세스 중에서 현재 기동한 프로그램과 같은 이름을 가진 프로그램 수집System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("Process Name"); if (p.Length > 1){ for (int i = 0; i
-
C# DB에 이미지가 16진수로 저장되어 있을 때닷넷/C# 2016. 12. 7. 09:54
텍스트 파일에 저장되어 있는 것보다 간단하다.connection 부분과 command 부분은 뺐습니다. conn.Open(); SqlDataReader reader = comm.ExecuteReader(); byte[] bImage = null;while (reader.Read()){ bImage = (byte[])reader["Picture"]; // 이미지가 hex string으로 저장되어 있는 칼럼명} if (bImage != null){ pictureBox1.Image = new Bitmap(new MemoryStream(bImage));}reader.Close();conn.Close();Colored by Color Scriptercs
-
C# hex string to image닷넷/C# 2016. 12. 7. 09:46
이미지가 텍스트 파일로 저장되어 있고, 그 데이터가 16진수라면그 파일을 읽어서 PictureBox에 불러 오는 방법. 지식인에 답변한 거에서 아주 조금 다듬음. - 이벤트에 작성 OpenFileDialog ofd = new OpenFileDialog(); // 파일열기if (ofd.ShowDialog() == DialogResult.OK){ string fileName = ofd.FileName; string imgtxt = System.IO.File.ReadAllText(fileName); // 텍스트파일내용 가져오기 Byte[] data = HexString2Bytes(imgtxt.Substring(2)); //string 형식인 데이터의 형식을 바이트로 바꾸기 // 참고로 16진수를 나타내는 0x..
-
C#에서 MDB(MS Access) 파일 압축하기닷넷/C# 2016. 10. 11. 12:19
먼저 참조추가에서 COM 탭에 있는 Microsoft Jet and Replication Objects 2.6 Library를 추가한다. JRO.JetEngineClass jro = new JRO.JetEngineClass(); jro.CompactDatabase("Provider=Microsoft.jet.OLEDB.4.0;Data Source=압축할MDB", "Provider=Microsoft.jet.OLEDB.4.0;Data Source=압축후MDB"); 만약 Interop 형식 'JRO.JetEngineClass'을(를) 포함할 수 없습니다. 적용 가능한 인터페이스를 대신 사용하십시오. 같은 오류가 발생하면 1. 참조에 JRO를 클릭하거나 오른쪽 마우스로 클릭하여 속성창을 띄운다. 2. 속성창에 [..
-
C# 레지스트리 읽기, 쓰기닷넷/C# 2016. 9. 22. 13:36
using Microsoft.Win32; // 레지스트리 읽기 public string getReg(string regName) { RegistryKey reg = Registry.LocalMachine; reg = reg.OpenSubKey("Software\\Your Program Name", true); string regData = ""; if (reg == null) regData = ""; else regData = Convert.ToString(reg.GetValue(regName)); return regData; } // 레지스트리 쓰기 public void setReg(string regName, string regData) { RegistryKey reg = Registry.LocalM..
-
C# mdb, accdb 연결 방법닷넷/C# 2016. 9. 22. 13:03
using System.Data.OleDb; // mdb인 경우OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mdb파일;"); // accdb 경우OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=accdb파일;Mode=ReadWrite;");
-
C# MSSQL 저장프로시저 호출 및 반환값 가져오는 방법닷넷/C# 2016. 9. 1. 18:30
다음은 구글링 하니 C#에서 MSSQL의 저장프로시저를 사용하는 방법이라고 나온 것이다. SqlCommand cmd = new SqlCommand("저장프로시저이름", conn);cmd.CommandType = CommandType.StoredProcedure;cmd.Parameters.Add("@변수이름", SqlDbType.변수타입) = 데이터; 간단하게SqlCommand cmd = new SqlCommand("EXEC 프로시저명 값1, 값2", conn);cmd.ExecuteNonQuery();이렇게 써도 된다. 그런데 저장 프로시저에 SELECT가 있어서 반환값을 가져 올 수 있는 경우단순히 Command를 사용하면 되지 않는다. 이때는 Adapter와 DataTable를 이용하면 된다. SqlD..