첨부 소스 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
0.01MB

▶ MainForm.cs

using System;
using System.Windows.Forms;

using CefSharp;
using CefSharp.WinForms;

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

        #region Field

        /// <summary>
        /// 크로미엄 브라우저
        /// </summary>
        private ChromiumWebBrowser browser;

        #endregion

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

        #region 생성자 - MainForm()

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

            #region URL 텍스트 박스를 설정한다.

            this.urlTextBox.Text = "https://icodebroker.tistory.com/category";

            #endregion
            #region 크로미엄 브라우저를 설정한다.

            CefSettings setting = new CefSettings();

            Cef.Initialize(setting);

            browser = new ChromiumWebBrowser(this.urlTextBox.Text);
            
            browser.Dock = DockStyle.Fill;

            this.contentPanel.Controls.Add(browser);

            #endregion
            #region 이벤트를 설정한다.

            FormClosing                 += Form_FormClosing;
            this.backButton.Click       += backButton_Click;
            this.forwardButton.Click    += forwardButton_Click;
            this.refreshButton.Click    += refreshButton_Click;
            this.goButton.Click         += goButton_Click;
            this.browser.AddressChanged += browser_AddressChanged;
            this.browser.TitleChanged   += browser_TitleChanged;

            #endregion
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region 폼을 닫을 경우 처리하기 - Form_FormClosing(sender, e)

        /// <summary>
        /// 폼을 닫을 경우 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void Form_FormClosing(object sender, FormClosingEventArgs e)
        {
            Cef.Shutdown();
        }

        #endregion
        #region 뒤로 가기 버튼 클릭시 처리하기 - backButton_Click(sender, e)

        /// <summary>
        /// 뒤로 가기 버튼 클릭시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void backButton_Click(object sender, EventArgs e)
        {
            if(this.browser.CanGoBack)
            {
                this.browser.Back();
            }
        }

        #endregion
        #region 앞으로 가기 버튼 클릭시 처리하기 - forwardButton_Click(sender, e)

        /// <summary>
        /// 앞으로 가기 버튼 클릭시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void forwardButton_Click(object sender, EventArgs e)
        {
            if(this.browser.CanGoForward)
            {
                this.browser.Forward();
            }
        }

        #endregion
        #region 갱신 버튼 클릭시 처리하기 - refreshButton_Click(sender, e)

        /// <summary>
        /// 갱신 버튼 클릭시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void refreshButton_Click(object sender, EventArgs e)
        {
            this.browser.Refresh();
        }

        #endregion
        #region 이동 버튼 클릭시 처리하기 - goButton_Click(sender, e)

        /// <summary>
        /// 이동 버튼 클릭시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void goButton_Click(object sender, EventArgs e)
        {
            this.browser.Load(this.urlTextBox.Text);
        }

        #endregion
        #region 브라우저 주소 변경시 처리하기 - browser_AddressChanged(sender, e)

        /// <summary>
        /// 브라우저 주소 변경시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void browser_AddressChanged(object sender, AddressChangedEventArgs e)
        {
            Invoke(new MethodInvoker(() => { this.urlTextBox.Text = e.Address; } ));
        }

        #endregion
        #region 브라우저 제목 변경시 처리하기 - browser_TitleChanged(sender, e)

        /// <summary>
        /// 브라우저 제목 변경시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void browser_TitleChanged(object sender, TitleChangedEventArgs e)
        {
            Invoke(new MethodInvoker(() => { Text = "크로미엄 브라우저 사용하기 : " + e.Title; } ));
        }

        #endregion
    }
}

※ 플랫폼 대상을 x86 또는 x64로 배포해야 한다.

728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요