DevExpress XtraTabControl TabHeader Customizing

Published Jul 12, 2013 | Updated Sep 28, 2022 | 0 comments

TabHeader 의 높이(위치가 Top 일때)를 임의 크기로 변경

좌측상단 꺽이는 부분을 없애기 위함

변경사항

Customizing 을 위해 별도 클래스 생성

using System.Drawing;

using DevExpress.XtraTab;
using DevExpress.XtraTab.ViewInfo;
namespace KKOMZI
{
    public class MyTabControl : XtraTabControl 
    { 
        public MyTabControl() : base() 
        { 
            DevExpress.XtraTab.Registrator.PaintStyleCollection.DefaultPaintStyles.Add(new MyViewInfoRegistrator());
        }
    }
    public class MyViewInfoRegistrator : DevExpress.XtraTab.Registrator.SkinViewInfoRegistrator
    {
        public override string ViewName
        {
            get
            {
//				return base.ViewName;
                return "MyView";
            }
        }
        public override BaseTabHeaderViewInfo CreateHeaderViewInfo(BaseTabControlViewInfo viewInfo) 
        { 
            return new MyHeaderViewInfo(viewInfo); 
        }
    }
    public class MyHeaderViewInfo : DevExpress.XtraTab.ViewInfo.SkinTabHeaderViewInfo
    {
        /// <summary>
        /// 탭 헤더 높이
        /// </summary>
        private int TabHeight = 40; 
        public MyHeaderViewInfo(BaseTabControlViewInfo viewInfo) : base(viewInfo) { }
        protected override Size CalcHPageSize(BaseTabPageViewInfo info)
        {
            Size size = base.CalcHPageSize(info);
//			size.Height += 50;
            size.Height = TabHeight;
            size.Height = TabHeight; return size;
        }
        protected override Rectangle CalcRowClientBounds(BaseTabRowViewInfo row, Rectangle headerClient)
        {
            Rectangle rect = base.CalcRowClientBounds(row, headerClient);
//			rect.Inflate(0, -20);
            return rect;
        }
        /// <summary>
        ///  탭 헤더 시작위치 변경(좌측 상단 꺽이는 부분을 없애기 위해) : 스킨마다 좀 다른듯?
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        protected override Point CalcStartPoint(Point p)
        {
            int num = -1; 
            int num2 = 2; 
            if (this.IsSideLocation) 
            { 
                p.Y += num; 
                if (this.HeaderLocation == TabHeaderLocation.Left) 
                    p.X += num2;
            } 
            else
            {
                p.X += num;
                if (this.HeaderLocation == TabHeaderLocation.Top)
                    p.Y += num2; 
            }
            return p;
        }
    }
}

실제 사용시 PaintStyleName 를 맞춰주면됨

myTabControl1.LookAndFeel.SetStyle(DevExpress.LookAndFeel.LookAndFeelStyle.Skin, false, false, "Office 2007 Blue");
myTabControl1.PaintStyleName = "MyView";

TAG INFORMATION

Learn more on this topic

Related Blog Posts

C# 으로 사용자 입력을 받아 동작하는 콘솔 프로그램 구현

C# 으로 사용자 입력을 받아 동작하는 콘솔 프로그램 구현

네이버 지식인에서 우연히 보게 된 누군가의 질문... c# 콘솔 형태의 프로그램이며, 일정 갯수의 숫자를 데이터로 입력 받아 최대값/최소값 등을 구하거나 종료할 수 있는 기능을 하는 프로그램이 요구사항 이었다 내가 답변한 원문은 여기 : C# 프로그래밍 질문 : 지식iN (naver.com)네이버 지식인 링크 실제 프로그램이 실행되는 스크린샷은 다음 이미지와 같습니다. 프로그램이 실행되면 메뉴 설명을 출력합니다. 메뉴 선택에서 0~3 까지 숫자를 입력 받아 메뉴 선택의 용도로...

read more

Join in the conversation

Leave a Comment

0 Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Banner IT Service

전광판

텍스트를 입력하고 텍스트 효과 및 배경효과 를 변경해서 전체화면으로 표시할 수 있는 전광판 용도로 사용하실 수 있습니다. 각종 스포츠 및 공연 관람시 응원 용도로 사용이 가능합니다.

Carousel

여러개의 슬라이드를 추가하여 프레젠테이션 및 이미지 슬라이드 용도로 사용하실 수 있습니다. 브라우저가 포함된 IT 기기로 큰 모니터에 연결하여 매장 내 공지사항 및 메뉴소개를 이미지로 표시할 수 있습니다.

Pin It on Pinterest

Shares
Share This

Share This

Share this post with your friends!

Shares