アプリケーション スタイリング

0 ユーザーが評価
この投稿には確認済みの回答があります。 0 返信 | 1 サポーター

トップ 10 投稿者 
女性
投稿 18
IG Employee
[IG] Yoshimi 投稿済み: 2010/12/22 14:54

アプリケーション スタイリング - WinForms スタイル設定コントロール

元記事 (英語) - Tom Puglisihttp://blogs.infragistics.com/blogs/tom_puglisi/archive/2009/02/24/application-styling-style-selector-user-control-for-winforms.aspx

ある日、ユーザーがアプリケーション スタイルを自由に選択できるアプリケーション、、、ユーザー コントロールを構成フォームに追加するだけでユーザーがディレクトリに存在するスタイル一覧から好きなスタイルを選択できたら。。。。と考えました。 そしてそのような機能を実現するサンプル アプリケーションを作ってみました。
以下はその方法です (アプリケーション スタイリング テーマは Infragistics NetAdvantage Windows Forms コントロールに含まれます)。

まず、AppStylingLib と呼ばれるプロジェクトを作成し、その中に AppStyleUserControl.cs という名前のユーザー コントロールを追加します。このユーザー コントロールにより、Styles ディレクトリにあるスタイルの一覧からユーザーが好きなスタイルを選択できます。 このユーザー コントロールは、選択されたスタイルを設定ファイルに読み込み、保持します。 このプロジェクトには、AppStylingLibSettings.settings という名前の設定ファイルも含まれます。 このファイルは、エンドユーザーが選択したスタイルを保持します。

 

以下はユーザー コントロールのソース コードです:

using

System;

using

System.Collections.Generic;

using

System.ComponentModel;

using

System.Drawing;

using System.Text;

using

System.Windows.Forms;

using

System.IO;

using

Infragistics.Win.AppStyling;

namespace

AppStylingLib

{

public partial class AppStyleUserControl : UserControl

{

public AppStyleUserControl()

{

InitializeComponent();

}

private static string _StylePath = string.Empty;

//ユーザー コントロール インスタンスを読み込む前でもこのプロパティを設定できるように静的にします。このプロパティは Main( ) メソッドで設定します。

public static string StylePath

{

get { return _StylePath; }

set { _StylePath = value; }

}

private void AppStyleUserControl_Load(object sender, EventArgs e)

{

this.LoadUI();

}

/// <summary>

/// このボタンをクリックすると現在のアプリケーション スタイルを読み込み、保持します。

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnApply_Click(object sender, EventArgs e)

{

if (this.cboStyles.SelectedIndex != -1)

{

string theStyleFile = this.cboStyles.SelectedItem.DataValue.ToString();

StyleManager.Load(theStyleFile);

AppStylingLibSettings.Default.AppStyle = Path.GetFileName(theStyleFile);

AppStylingLibSettings.Default.Save();

}

}

/// <summary>

/// このメソッドは、フォームのコントロールの読み込み、または更新します

/// つまり、WinComboEditor が指定されたディレクトリをスキャンし、

/// スタイル ファイル (*.isl) を生成します

/// </summary>

public void LoadUI()

{

this.cboStyles.Items.Clear();

if (Directory.Exists(StylePath))

{

string[] theFiles = Directory.GetFiles(StylePath, "*.isl");

if (theFiles.Length > 0)

{

foreach (string theFile in theFiles)

{

this.cboStyles.Items.Add(theFile, Path.GetFileNameWithoutExtension(theFile));

}

}

//保持されているスタイルがあるかどうかをチェックします

string theStyle = AppStylingLibSettings.Default.AppStyle.Trim();

 

if (this.cboStyles.Items.Count > 0 && theStyle.Length > 0)

{

//すでにスタイルがある場合、Combo 内のスタイルを選択し、スタイルが適用されていることを確認します

this.cboStyles.Value = Path.Combine(StylePath, theStyle);

}

}

}

 

/// <summary>

/// このメソッドは保持されていたスタイルを読み込みます

/// </summary>

public static void LoadePersistedStyle()

{

string theStyle = AppStylingLibSettings.Default.AppStyle.Trim();

if (theStyle.Length > 0)

{

StyleManager.Load(Path.Combine(StylePath, theStyle));

}

}

}

}

 

以下はこの User Control の使用法です:

  1. "構成" フォームとして指定したアプリケーション フォームにユーザー コントロールを追加します
  2. *.isl ファイルをどこに保存するかを決める (デフォルト パスに加えて、ユーザーがカスタムにパスを指定できるようにするとよいでしょう)。
  3.  *.isl パスのユーザー コントロールに知らせて、すでに保持されているスタイル (ある場合) を読み込みます。

以下は、このユーザー コントロールを使用するサンプル アプリケーションの Main メソッドです:

/// <summary>

/// アプリケーションのメイン エントリー ポイント

/// </summary>

[STAThread]

static void Main()

{

 

//static メンバーを使用して設定します

AppStylingLib.AppStyleUserControl.StylePath = Application.StartupPath + @"\Styles";

AppStylingLib.AppStyleUserControl.LoadePersistedStyle();

 

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form1());

}

このアプリケーションは、複数の *.isl ファイルを含むサブディレクトリ Styles があるとみなします。

このサンプルのソースコードは以下からダウンロードできます。

http://download.infragistics.com/users/TomP/AppStylingUserControlTest.zip

 

-->

ページ 1 / 1 (1 項目) | RSS
Infragistics Japan
インフラジスティックス ジャパン