첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ FlyoutPanel 클래스 : 플라이아웃 패널 사용하기

------------------------------------------------------------------------------------------------------------------------


TestProject.zip


MainForm.cs

 

 

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Windows.Forms;

 

using DevExpress.Utils;

using DevExpress.Utils.Win;

using DevExpress.XtraEditors;

 

namespace TestProject

{

    /// <summary>

    /// 메인 폼

    /// </summary>

    public partial class MainForm : XtraForm

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

        ////////////////////////////////////////////////////////////////////////////////////////// Private

 

        #region Field

 

        /// <summary>

        /// 플라이아웃 패널

        /// </summary>

        private FlyoutPanel flyoutPanel;

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - MainForm()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainForm()

        {

            InitializeComponent();

 

            #region 플라이아웃 패널 컨트롤을 설정한다.

 

            ListControl listControl = new ListControl();

 

            listControl.Dock = DockStyle.Fill;

 

            this.flyoutPanel = GetFlyoutPanel

            (

                "flyoutPanel",

                "flyoutPanelControl",

                new Size(200, 200),

                this.selectColorButton,

                new Control[] { listControl }

            );

 

            #endregion

            #region 이벤트를 설정한다.

 

            this.selectColorButton.Click += selectColorButton_Click;

            this.flyoutPanel.Shown       += flyoutpanl_Shown;

 

            #endregion

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Private

        //////////////////////////////////////////////////////////////////////////////// Event

 

        #region 플라이아웃 패널 표시시 처리하기 - flyoutpanl_Shown(sender, e)

 

        /// <summary>

        /// 플라이아웃 패널 표시시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void flyoutpanl_Shown(object sender, FlyoutPanelEventArgs e)

        {

            FlyoutPanel flyoutPanel = sender as FlyoutPanel;

 

            ToolFormObjectInfo info = flyoutPanel.GetCurrentObjectInfo();

 

            if(info != null)

            {

                info.Form.Opacity = 0.3;

            }

        }

 

        #endregion

        #region 색상 선택 버튼 클릭시 처리하기 - selectColorButton_Click(sender, e)

 

        /// <summary>

        /// 색상 선택 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void selectColorButton_Click(object sender, EventArgs e)

        {

            this.flyoutPanel.ShowBeakForm();

        }

 

        #endregion

 

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

 

        #region 플라이아웃 패널 구하기 - GetFlyoutPanel(flyoutPanelName, flyoutPanelControlName, panelSize,

            ownerControl, contentControlEnumerable, buttonPanelHeight, popupToolWindowAnimation)

 

        /// <summary>

        /// 플라이아웃 패널 구하기

        /// </summary>

        /// <param name="flyoutPanelName">플라이아웃 패널명</param>

        /// <param name="flyoutPanelControlName">플라이아웃 패널 컨트롤명</param>

        /// <param name="panelSize">패널 크기</param>

        /// <param name="ownerControl">소유자 컨트롤</param>

        /// <param name="contentControlEnumerable">컨텐트 컨트롤 열거 가능형</param>

        /// <param name="buttonPanelHeight">버튼 패널 높이</param>

        /// <param name="popupToolWindowAnimation">팝업 툴 윈도우 애니메이션</param>

        /// <returns>플라이아웃 패널</returns>

        private FlyoutPanel GetFlyoutPanel

        (

            string                   flyoutPanelName,

            string                   flyoutPanelControlName,

            Size                     panelSize,

            Control                  ownerControl,

            IEnumerable<Control>     contentControlEnumerable,

            int                      buttonPanelHeight = 40,

            PopupToolWindowAnimation popupToolWindowAnimation = PopupToolWindowAnimation.Slide

        )

        {

            FlyoutPanel flyoutPanel = new FlyoutPanel();

 

            flyoutPanel.Name                                 = flyoutPanelName;

            flyoutPanel.Margin                               = new Padding(0);

            flyoutPanel.Size                                 = panelSize;

            flyoutPanel.OwnerControl                         = ownerControl;

            flyoutPanel.OptionsButtonPanel.ButtonPanelHeight = buttonPanelHeight;

 

            FlyoutPanelControl flyoutPanelControl = new FlyoutPanelControl();

 

            flyoutPanelControl.Name        = flyoutPanelControlName;

            flyoutPanelControl.Margin      = new Padding(0);

            flyoutPanelControl.Dock        = DockStyle.Fill;

            flyoutPanelControl.FlyoutPanel = flyoutPanel;

 

            flyoutPanel.Controls.Add(flyoutPanelControl);

 

            if(contentControlEnumerable != null)

            {

                foreach(Control control in contentControlEnumerable)

                {

                    flyoutPanelControl.Controls.Add(control);

                }

            }

 

            return flyoutPanel;

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요