즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

개발/C# + DevExpress

[2021.04] DevExpress 스킨목록 가져오고 적용하기

다물칸 2021. 4. 22. 15:11
728x90
반응형

예전 홈페이지에 등록한 글을 각색해서 다시 등록해봅니다. 

 

DevExpress를 사용하는 이유가 각종 콘트롤 및 그리드의 특화기능을 이용하기 위해서라고 생각합니다. 

예전 비주얼 베이직 6.0보다 나만의 콘트롤 만들기가 난해해져서 상용 콘트롤을 택했던 것 같습니다. 

 

이외에도 생각보다 많은 스킨을 제공하며 약간 디자이너의 도움을 받아야 겠지만 스킨 에디터를 제공해 나만의 스킨제작도 가능합니다. 스킨제작은 사용하는 모든 콘트롤의 색상 등을 조정해야 합니다. 뭐 기존 스킨을 가져와서 조금만 수정해 사용해도 될 것 같습니다. 

 

오늘은 DevExpress에서 제공하는 스킨을 콤보박스에 가져오고 SelectIndexChanged() 이벤트를 이용해 폼에 스킨을 적용하는 방법을 알아보도록 하겠습니다. 적용 시 실행된 모든 폼에 적용이 됩니다. 

 

using DevExpress.XtraEditors;
using DevExpress.Skins;

public frmConfig_Load() {
  // 이벤트를 추가합니다.
  comboBoxEdit1.SelectedIndexChanged += new EventHandler(comboBoxEdit1_SelectedIndexChanged);
  // foreach 문을 이용해 스킨목록을 콤보박스에 추가
  foreach(SkinContainer cnt in SkinManager.Default.Skins) {
    comboBoxEdit1.Properties.Items.Add(cnt.SkinName);
  }
}

void comboBoxEdit1_SelectedIndexChanged(object sender, EventArgs e) {
    ComboBoxEdit comboBox = sender as ComboBoxEdit;
    string skinName = comboBox.Text;
    DevExpress.LookAndFeel.UserLookAndFeel.Default.SkinName = skinName;
}

요렇게 하면 콤보박스에서 스킨을 선택할 때마다 폼스킨이 변경하는 것을 보실 수 있습니다. 

 

다음은 skinname을 설정파일에 저장했다고 가정하고 진입점에 스킨을 적용하는 방법입니다. 

 

private void frmMain_Load(object sender, EventArgs e)
{
	BonusSkins.Register();
	SkinManager.EnableFormSkins();
	UserLookAndFeel.Default.SetSkinStyle(Cfg.SystemBasic.SkinName);
	UserLookAndFeel.Default.SkinName = Cfg.SystemBasic.SkinName;
}

frmMain 폼이 최초 진입 폼이라고 했을 때 Load() 이벤트에 위 코드를 넣어주시면 됩니다. 

 

Cfg.SystemBasic.SkinName은 스킨이름을 저장한 설정값입니다. 

반응형