첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

TestProject.zip
다운로드

▶ MainForm.cs

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace TestProject
{
    /// <summary>
    /// 메인 폼
    /// </summary>
    public partial class MainForm : Form
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Import
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 메시지 보내기 - SendMessage(windowHandle, message, wordParameter, longParameterArray)

        /// <summary>
        /// 메시지 보내기
        /// </summary>
        /// <param name="windowHandle">윈도우 핸들</param>
        /// <param name="message">메시지</param>
        /// <param name="wordParameter">WORD 매개 변수</param>
        /// <param name="longParameterArray">LONG 매개 변수 배열</param>
        /// <returns>처리 결과</returns>
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern IntPtr SendMessage(IntPtr windowHandle, uint message, int wordParameter, int[] longParameterArray);

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region Field

        /// <summary>
        /// EM_SETTABSTOPS
        /// </summary>
        private const uint EM_SETTABSTOPS = 0xcb;

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainForm()

        /// <summary>
        /// 생성자
        /// </summary>
        public MainForm()
        {
            InitializeComponent();

            #region 이벤트를 설정한다.

            Load += Form_Load;

            #endregion
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Private
        //////////////////////////////////////////////////////////////////////////////// Event

        #region 폼 로드시 처리하기 - Form_Load(sender, e)

        /// <summary>
        /// 폼 로드시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void Form_Load(object sender, EventArgs e)
        {
            SetTab(this.carListBox, new int[] { 120, 170, 220 });
            SetTab(this.carListBox, new int[] { 120, 170, 220 });
            
            SetTab(this.carTextBox, new int[] { 120, 170, 220 });

            AddData("SSC Ultimate Aero"           , 257, 1183, 654400 );
            AddData("Bugatti Veyron"              , 253, 1001, 1700000);
            AddData("Saleen S7 Twin-Turbo"        , 248, 750 , 555000 );
            AddData("Koenigsegg CCX"              , 245, 806 , 545568 );
            AddData("McLaren F1"                  , 240, 637 , 970000 );
            AddData("Ferrari Enzo"                , 217, 660 , 670000 );
            AddData("Jaguar XJ220"                , 217, 542 , 650000 );
            AddData("Pagani Zonda F"              , 215, 650 , 667321 );
            AddData("Lamborghini Murcielago LP640", 211, 640 , 430000 );
            AddData("Porsche Carrera GT"          , 205, 612 , 440000 );
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////// Function

        #region 탭 설정하기 - SetTab(listBox, tabEnumerable)

        /// <summary>
        /// 탭 설정하기
        /// </summary>
        /// <param name="listBox">리스트 박스</param>
        /// <param name="tabEnumerable">탭 열거 목록</param>
        private void SetTab(ListBox listBox, IEnumerable<int> tabEnumerable)
        {
            listBox.UseTabStops         = true;
            listBox.UseCustomTabOffsets = true;

            ListBox.IntegerCollection offsetCollection = listBox.CustomTabOffsets;

            foreach(int tab in tabEnumerable)
            {
                offsetCollection.Add(tab);
            }
        }

        #endregion
        #region 탭 설정하기 - SetTab(textBox, tabArray)

        /// <summary>
        /// 탭 설정하기
        /// </summary>
        /// <param name="textBox">텍스트 박스</param>
        /// <param name="tabArray">탭 배열</param>
        private void SetTab(TextBox textBox, int[] tabArray)
        {
            SendMessage(textBox.Handle, EM_SETTABSTOPS, tabArray.Length, tabArray);
        }

        #endregion

        #region 데이터 추가하기 - AddData(name, mph, hp, price)

        /// <summary>
        /// 데이터 추가하기
        /// </summary>
        /// <param name="name">명칭</param>
        /// <param name="mph">MPH</param>
        /// <param name="hp">HP</param>
        /// <param name="price">가격</param>
        private void AddData(string name, int mph, int hp, decimal price)
        {
            string data = name + "\t" + mph.ToString() + " mph\t" + hp.ToString() + " hp\t" + price.ToString("C");

            this.carListBox.Items.Add(data);

            this.carTextBox.Text += data + "\r\n";

            this.carFormattedTextBox.Text += string.Format("{0,-30}{1,7} mph{2,7} hp{3,15:C}\r\n", name, mph, hp, price);
        }

        #endregion
    }
}
728x90
반응형
그리드형
Posted by 사용자 icodebroker

댓글을 달아 주세요