Array values = (System.Array)workSheet.get_Range("B2", "Z2").Value2; 

'.Net > C#' 카테고리의 다른 글

C# CMD 창 띄우지 않고 명령어 실행하기  (0) 2012.12.26
유니코드표  (0) 2012.09.24
C# Serialize, Deserialize  (0) 2012.08.21
C# DoubleBuffering (더블 버퍼링)  (0) 2012.08.07
C# UserControl->UserControl 네이버 지식인 답변  (0) 2012.07.17

목 차

 

 

  • MS Chart 란

     

  • MS Chart 설치 및 예제

 

 

 

 

 

  • MS Chart 란

MS에서 제공하는 무료 WinForm / ASP.NET 차트입니다.

아래와 같은 차트를 아주 쉽게 MS Chart를 이용해 사용 하실 수 있습니다.

 

 

 

 

==============================================================

 

  • MS Chart 설치 및 예제

 

차트 컨트롤을 비쥬얼 스튜디오 2008과 통합 :

Microsoft Chart Controls Add-on for Microsoft Visual Studio 2008

 

컨트롤과 차트 컨트롤 설치하시고, 비쥬얼 스튜디오 2008과 통합 시켜주는 AddOn을 다운받아 설치 하시면 됩니다. 설치 중 특별한 것은 없으므로 넘어 가도록 하겠습니다.

 

도구 상자 항목 선택으로 가서 Chart 2개 모두 체크하고 확인 버튼을 누릅니다.

 

 

도구 상자에 Chart 컨트롤을 확인 하실 수 있습니다. 드래그 하여 Form으로 옮깁니다.

 

 

 

속성을 중 Annotations는 차트 주석 컬렉션이고, ChartAreas는 차트 영역으로 여러 개의 차트를 설정 할 수 있고, Legends는 차트 범례입니다. Series는 차트 계열로써 차트 타입을 선택 할 수 있습니다. Titles는 차트 제목입니다.

 

 

 

Series의 속성 ChartType으로 차트 타입을 추가 하실 수 있습니다.

비하인드 코드로 파이를 설정 하는 예제를 보겠습니다.

 

 

 

 

 

==============================================================

 

 

아래의 이미지는 예제의 결과 입니다.

Series 3개를 생성하여 각각 Bubble, Range, Spline 타입으로 설정하였습니다.

 

 

 

 

namespace AboutChart

{

public partial class Form1 : Form

{

Series weight_series = new Series();

Series height_series = new Series();

Series fat_series = new Series();

 

public Form1()

{

InitializeComponent();

 

}

필드에서는 체중,키,비만의 Series 개체를 생성합니다.

 

 

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)

{

if (e.Index == 0)

{

if (e.CurrentValue == CheckState.Checked)

{

chart1.Series.Remove(fat_series);

}

else

{

MakeFatStatisticsChart();

}

}

else if (e.Index == 1)

{

if (e.CurrentValue == CheckState.Checked)

{

chart1.Series.Remove(weight_series);

}

else

{

MakeWeightStatisticsChart();

}

}

else if (e.Index == 2)

{

if (e.CurrentValue == CheckState.Checked)

{

chart1.Series.Remove(height_series);

}

else

{

MakeHeightStatisticsChart();

}

}

 

}

체크 리스트 박스에서 체크 박스를 선택하게 변하게 되면 이벤트가 발생하게 하였습니다.

체크가 안되어 있을 때 선택 하였을 때는, 화면에 해당 차트를 보여주고, 체크가 되어 있을 때 선택 하였을 때는 해당 차트를 제거합니다.

 

 

private void MakeFatStatisticsChart()

{

fat_series.Points.Clear();

 

fat_series.Name = "자기 비만도";

fat_series.ChartArea = "ChartArea1";

fat_series.ChartType = SeriesChartType.Bubble;

fat_series.Legend = "Legend1";

 

chart1.Series.Add(fat_series);

 

Push_data(fat_series, "2010.11.1", 50);

Push_data(fat_series, "2010.11.2", 30);

Push_data(fat_series, "2010.11.3", 40);

Push_data(fat_series, "2010.11.4", 10);

 

}

Series클래스의 Points는 차트의 X, Y축의 값입니다.

Name은 차트 오른쪽 상단에 이름이며, ChartArea는 생성한 ChartArea 이름 입니다.

ChartType은 Bubble로 설정해 주었습니다.

Chart에 Series를 추가해주고, Push_data 메소드를 통해 fat_series Series에 x, y축의 데이터를 추가하게 됩니다.

 

private void Push_data(Series series, string p, int p_3)

{

DataPoint dp = new DataPoint();

dp.SetValueXY(p, p_3);

series.Points.Add(dp);

}

 

 

 

private void MakeWeightStatisticsChart()

{

weight_series.Points.Clear();

 

weight_series.Name = "체중 변화도";

weight_series.ChartArea = "ChartArea1";

 

weight_series.ChartType = SeriesChartType.Range;

weight_series.Legend = "Legend1";

 

chart1.Series.Add(weight_series);

 

Push_data(weight_series, "2010.11.1", 30);

Push_data(weight_series, "2010.11.2", 40);

Push_data(weight_series, "2010.11.3", 10);

Push_data(weight_series, "2010.11.4", 20);

}

 

private void MakeHeightStatisticsChart()

{

height_series.Points.Clear();

 

height_series.Name = "키 변화도";

height_series.ChartArea = "ChartArea1";

height_series.ChartType = SeriesChartType.Spline;

height_series.Legend = "Legend1";

 

chart1.Series.Add(height_series);

 

Push_data(height_series, "2010.11.1", 10);

Push_data(height_series, "2010.11.2", 30);

Push_data(height_series, "2010.11.3", 50);

Push_data(height_series, "2010.11.4", 20);

}

키와 체중도 ChartType을 제외하곤 같습니다.

 

 

==============================================================

 

 

 

 

DataPoint dp = new DataPoint();

dp.SetValueY(textBox2.Text);

series1.Points.Add(dp);

X축의 데이터를 추가하지 않으시면, 아래의 그림과 같이포인트를 추가 할 수록 X값이 1부터 시작하여 자동적으로 늘어 나는 것을 확인 하실 수 있습니다.

 

 

리얼포스 87 10주년 중고를 살까......하다가

결국에 마제스터치2 옐로우를 사게되었다..ㅋㅋㅋㅋㅋ

너무 이뻐서.......ㅜㅠ

ㅋㅋㅋㅋㅋㅋ

 

드디어 기계식 키보드 세계 입문~

역시 기대이상으로 엄청나게 이쁘다.

자칫 잘못보면 레고같아 보일수있다..ㅋㅋㅋㅋㅋㅋ

야호~

이제 코딩할떄는 꼭 화장실가서 손씻고 와야겠다..ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

갈축인데도 소리는 좀 큰거같다..

서울올라가면 더 조용할텐데

살살 쳐야겠다..ㅋㅋ

 

키보드는 아이오매니아에서 구매하였다~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

제목은 거창하나.....하하...지식인 답변달기 위해 작성한 프로젝트입니다.

사용자가 폴더 경로를 선택하면 해당 폴더의 하위 폴더들과 파일들의 아이콘들을 가져와서

ListView에 추가하는 로직입니다.

더불어 아이콘을 더블 클릭하면 폴더 및 파일이 실행됩니다.

 

결과 화면부터 보겠습니다.

 

[이미지 1] 결과화면

 

 

 

Icon은

http://bbangwon.tistory.com/20

위의 블로그에서 Icon 얻어오는 소스 사용하였습니다.

 

 

프로젝트 설명하겠습니다.

디자이너는 아래의 이미지와 같이 구성하였습니다.

 

 

[이미지 2] 디자이너 화면

 

 

 

 

소스입니다. 이거 원 전체 소스를 올려버렸네요..ㅡㅡ;

흠...주석 달기가 애매해서 일단 올립니다.

문의 사항은 ehdrnsep@nate.com 메일주세요!

 

HowToImageListView.zip

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace HowToImageListView
{
    public partial class Form1 : Form
    {
        /// <summary>
        /// 현재 폴더 경로입니다.
        /// </summary>
        string selectedFolderPath;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //ListView의 표시방법을 LrageIcon으로 설정
            this.listView.View = View.LargeIcon;
            this.listView.MouseDoubleClick += new MouseEventHandler(listView_MouseDoubleClick);
        }


        /// <summary>
        /// ListView에서 Mouse DoubleClick 하였을 때
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void listView_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (this.listView.SelectedItems.Count != 0)
            {
                string path = this.listView.SelectedItems[0].Text;

                //폴더라면
                if (System.IO.Directory.Exists(path) == true)
                {
                    System.Diagnostics.Process.Start(path);
                }
                else //파일이라면
                {
                    System.Diagnostics.Process.Start(string.Format(@"{0}\{1}",this.selectedFolderPath,path));
                }
            }
        }

        /// <summary>
        /// 폴더 경로 설정
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ToolStripMenuItem_Open_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fb = new FolderBrowserDialog();
            if (fb.ShowDialog() == DialogResult.OK)
            {
                this.selectedFolderPath = fb.SelectedPath;
                AddListViewLargeImageItem(fb.SelectedPath);
            }
        }

        /// <summary>
        /// 해당 폴더 경로의 아이콘들을 ListView에 추가한다.
        /// </summary>
        /// <param name="p"></param>
        private void AddListViewLargeImageItem(string folderPath)
        {
            this.listView.Items.Clear();

            ImageList imageList = new ImageList();
            imageList.ImageSize = new Size(32, 32);

            AddFolderIcon(ref imageList, folderPath);
            AddFileIcon(ref imageList, folderPath);
            
            this.listView.LargeImageList = imageList;
        }


        /// <summary>
        /// 파일의 아이콘을 추가합니다.
        /// </summary>
        /// <param name="imageList"></param>
        /// <param name="folderPath"></param>
        private void AddFileIcon(ref ImageList imageList, string folderPath)
        {
            string[] files = System.IO.Directory.GetFiles(folderPath);
            foreach (string file in files)
            {
                //아이콘 추가
                Icon icon = Etier.IconHelper.IconReader.GetFileIcon(file, Etier.IconHelper.IconReader.IconSize.Large, false);
                imageList.Images.Add(icon);

                this.listView.Items.Add(System.IO.Path.GetFileName(file), imageList.Images.Count - 1);
            }
        }

        /// <summary>
        /// 폴더의 아이콘을 추가합니다.
        /// </summary>
        /// <param name="imageList"></param>
        /// <param name="folderPath"></param>
        private void AddFolderIcon(ref ImageList imageList, string folderPath)
        {
            string[] folders = System.IO.Directory.GetDirectories(folderPath);

            foreach (string folder in folders)
            {
                //아이콘 추가
                Icon icon = Etier.IconHelper.IconReader.GetFolderIcon(Etier.IconHelper.IconReader.IconSize.Large, Etier.IconHelper.IconReader.FolderType.Open);
                imageList.Images.Add(icon);

                this.listView.Items.Add(System.IO.Path.GetDirectoryName(folder), imageList.Images.Count - 1);
            }
        }

        
    }
}


 

'.Net > Winform' 카테고리의 다른 글

C# Winform에서 DaumAPI 사용하기[1]_WebBrowser Control 사용  (0) 2012.09.10
C# MS Chart  (2) 2012.08.30
C# 자신의 IP 및 MAC ADRESS 확인하기  (0) 2012.08.29
C# Ping 확인  (0) 2012.08.28
C# 계정을 이용한 Directory Lock & Unlock  (0) 2012.08.28
        public static string GetMyIP()
        {
            IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
            string myip = string.Empty;
            foreach (IPAddress ia in host.AddressList)
            {
                if (ia.AddressFamily == AddressFamily.InterNetwork)
                {
                    myip = ia.ToString();break; 
                }
            }
            return myip;
        }

 

private static string GetMacAddress(string ip) { string macAddress = null; System.Management.ObjectQuery query = new System.Management.ObjectQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='TRUE'"); System.Management.ManagementObjectSearcher searcher = new System.Management.ManagementObjectSearcher(query); foreach (System.Management.ManagementObject obj in searcher.Get()) { string[] ipAddress = (string[])obj["IPAddress"]; if (ipAddress[0] == ip && obj["MACAddress"] != null) { macAddress = obj["MACAddress"].ToString(); break; } } return macAddress; }


 

'.Net > Winform' 카테고리의 다른 글

C# MS Chart  (2) 2012.08.30
C# ListView LargeIcon을 이용하여 Windows탐색기 효과내기  (2) 2012.08.29
C# Ping 확인  (0) 2012.08.28
C# 계정을 이용한 Directory Lock & Unlock  (0) 2012.08.28
C# ListView Headr Column Size 변경 막기  (0) 2012.08.28
using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;

namespace Examples.System.Net.NetworkInformation.PingTest
{
    public class PingExample
    {
        // args[0] can be an IPaddress or host name.
        public static void Main (string[] args)
        {
            Ping pingSender = new Ping ();
            PingOptions options = new PingOptions ();

            // Use the default Ttl value which is 128,
            // but change the fragmentation behavior.
            options.DontFragment = true;

            // Create a buffer of 32 bytes of data to be transmitted.
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes (data);
            int timeout = 120;
            PingReply reply = pingSender.Send (args[0], timeout, buffer, options);
            if (reply.Status == IPStatus.Success)
            {
                Console.WriteLine ("Address: {0}", reply.Address.ToString ());
                Console.WriteLine ("RoundTrip time: {0}", reply.RoundtripTime);
                Console.WriteLine ("Time to live: {0}", reply.Options.Ttl);
                Console.WriteLine ("Don't fragment: {0}", reply.Options.DontFragment);
                Console.WriteLine ("Buffer size: {0}", reply.Buffer.Length);
            }
        }
    }
}


 

 

 

http://msdn.microsoft.com/ko-kr/library/system.net.networkinformation.ping(v=VS.85).aspx

        /// <summary>
        /// Directory의 잠금을 해제합니다.
        /// </summary>
        /// <param name="folderPath"></param>
        private static void UnLock(string folderPath)
        {
            try
            {
                string adminUserName = Environment.UserName;// getting your adminUserName
                System.Security.AccessControl.DirectorySecurity ds = System.IO.Directory.GetAccessControl(folderPath);
                System.Security.AccessControl.FileSystemAccessRule fsa = new System.Security.AccessControl.FileSystemAccessRule(adminUserName,
                    System.Security.AccessControl.FileSystemRights.FullControl, System.Security.AccessControl.AccessControlType.Deny);

                ds.RemoveAccessRule(fsa);
                System.IO.Directory.SetAccessControl(folderPath, ds);
            }
            catch (Exception ex)
            {
            }

        }

        /// <summary>
        /// Directory를 잠급니다.
        /// </summary>
        /// <param name="folderPath"></param>
        private static void Lock(string folderPath)
        {
            try
            {
                string adminUserName = Environment.UserName;// getting your adminUserName
                System.Security.AccessControl.DirectorySecurity ds = System.IO.Directory.GetAccessControl(folderPath);
                System.Security.AccessControl.FileSystemAccessRule fsa = new System.Security.AccessControl.FileSystemAccessRule(adminUserName,
                    System.Security.AccessControl.FileSystemRights.FullControl, System.Security.AccessControl.AccessControlType.Deny);

                ds.AddAccessRule(fsa);
                System.IO.Directory.SetAccessControl(folderPath, ds);

            }
            catch (Exception ex)
            {
            }
        }


 

'.Net > Winform' 카테고리의 다른 글

C# 자신의 IP 및 MAC ADRESS 확인하기  (0) 2012.08.29
C# Ping 확인  (0) 2012.08.28
C# ListView Headr Column Size 변경 막기  (0) 2012.08.28
C# Excel 작성  (0) 2012.08.28
C# 리소스 언어 설정  (0) 2012.08.22
        public Form1()
        {
            InitializeComponent();
            this.listView1.ColumnWidthChanging+=new ColumnWidthChangingEventHandler(listView1_ColumnWidthChanging);
        }

        void listView1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
        {
            ListView listView = sender as ListView;
            if (listView != null)
            {
                e.NewWidth = listView.Columns[e.ColumnIndex].Width;
                e.Cancel = true;
            }
        }

 

'.Net > Winform' 카테고리의 다른 글

C# Ping 확인  (0) 2012.08.28
C# 계정을 이용한 Directory Lock & Unlock  (0) 2012.08.28
C# Excel 작성  (0) 2012.08.28
C# 리소스 언어 설정  (0) 2012.08.22
C# DirectX.AudioVideoPlayback 을 이용한 동영상 재생  (11) 2012.08.21

Visual Studio 2008, 닷넷프레임워크 2.0 기반에서 작성하였습니다.

 

 

테스트 용 콘솔  프로젝트 하나 생성하였습니다.

 

닷넷 프레임워크의 VSTO를 사용하기 위해선

 Microsoft.Office.Interop.Excel

참조 추가해주어야합니다.

 

[이미지 1]  Microsoft.Office.Interop.Excel 참조 추가

 


코드 부분입니다.

간단히 엑셀의 [1,1]에 테스트라는 문자열을 입력하였습니다.

엑셀은 배열로 접근 할 때, 0부터 시작이 아닌 1부터 시작입니다.

작업을 하신 후에는 꼭 메모리를 해제 시켜주셔야

Excel이 정상적으로 종료됩니다.

이 작업을 하지 않으실 경우에 작업 관리자에 Excel이 남아 있게 됩니다.

 

AboutExcel.zip

 

 

using System;
using System.Collections.Generic;
using System.Text;
using Excel = Microsoft.Office.Interop.Excel;

namespace AboutExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            AboutExcelWrite();
        }

        /// <summary>
        /// Excel에 작성하는 방법에 대해 설명할 메소드입니다.
        /// </summary>
        private static void AboutExcelWrite()
        {
            Excel.Application excelApp = new Excel.Application();
            Excel.Workbook wb = excelApp.Workbooks.Add(true);
            Excel._Worksheet workSheet = wb.Worksheets.get_Item(1) as Excel._Worksheet;


            //엑셀은 맨처음 Cell이 1,1 입니다      0,0이 아닙니다
            workSheet.Cells[1, 1] = "테스트";


            ExcelDispose(excelApp, wb, workSheet);
        }


        /// <summary>
        /// 저장및 메모리 해제
        /// </summary>
        /// <param name="excelApp"></param>
        /// <param name="wb"></param>
        /// <param name="workSheet"></param>
        public static void ExcelDispose(Excel.Application excelApp, Excel.Workbook wb, Excel._Worksheet workSheet)
        {
            wb.SaveAs(@"E:\Program\etc\C#\About\AboutExcel\bin\Debug\test.xls", Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
                Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            wb.Close(Type.Missing, Type.Missing, Type.Missing);
            excelApp.Quit();
            releaseObject(excelApp);
            releaseObject(workSheet);
            releaseObject(wb);
        }

        #region 메모리해제
        private static void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception e)
            {
                obj = null;
            }
            finally
            {
                GC.Collect();
            }
        }
        #endregion
    }
}


 

 

 

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo( "en-US" );
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo( "en-US" );


 

 

 

영어로 설정할 경우

 

            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo( "en-US" );
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo( "en-US" );
            try
            {
                throw new InvalidCastException();
            }
            catch(Exception e)
            {
                MessageBox.Show(e.Message);
            }

 


 

 

 

 

 

한글로 설정할 경우

 

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo( "ko-KR" ); System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo( "ko-KR" ); try { throw new InvalidCastException(); } catch(Exception e) { MessageBox.Show(e.Message); }

 

 

 


 

'.Net > Winform' 카테고리의 다른 글

C# ListView Headr Column Size 변경 막기  (0) 2012.08.28
C# Excel 작성  (0) 2012.08.28
C# DirectX.AudioVideoPlayback 을 이용한 동영상 재생  (11) 2012.08.21
C# 중복 실행 방지 Mutex  (0) 2012.08.14
C# DragDrop & DragEnter  (0) 2012.08.10

+ Recent posts