« SimpleNovelDownloader ver1.1 | トップページ | SaveDialogを拡張してコントロールを追加する(その3:完結編) »

2018.01.27

SaveDialogを拡張してコントロールを追加する(その2)

先日の記事では、ダイアログボックスのデザインがXPスタイルになっていました。どうもテンプレートを用いた場合には、XPスタイルになってしまうようです。

一方で、Windows7/10標準のメモ帳では
Win7memo_2


このようにWindows7スタイルのダイアログボックスのままでコントロールが追加されています。そこでネット上を検索したところ、C#での拡張の仕方を見つけました。見つけたのはtinqさんの夕暮れログです。
尚、この記事ではコモンダイアログ拡張に必要なWindowsApiCodePackを直接ダウンロードして手動で参照を追加していますが、VisualStudio2015/2017ではNugetを使用してプロジェクトに追加する方法をおすすめします。

で、テスト用コードがこちら。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.WindowsAPICodePack;
using Microsoft.WindowsAPICodePack.Dialogs;
using Microsoft.WindowsAPICodePack.Dialogs.Controls;

namespace CustomFileSaveDlg
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
CommonOpenFileDialog dialog = new CommonOpenFileDialog();
CommonFileDialogLabel cdlb = new CommonFileDialogLabel("文字コードセット");
CommonFileDialogComboBox comboBox = new CommonFileDialogComboBox();
comboBox.Items.Add(new CommonFileDialogComboBoxItem("Shift-JIS"));
comboBox.Items.Add(new CommonFileDialogComboBoxItem("JIS"));
comboBox.Items.Add(new CommonFileDialogComboBoxItem("EUC-JP"));
comboBox.Items.Add(new CommonFileDialogComboBoxItem("Unicode(Little Endian)"));
comboBox.Items.Add(new CommonFileDialogComboBoxItem("Unicode(Big Endian)"));
comboBox.Items.Add(new CommonFileDialogComboBoxItem("UTF-8"));
comboBox.Items.Add(new CommonFileDialogComboBoxItem("UTF-8N"));
comboBox.SelectedIndex = 0;
dialog.Controls.Add(cdlb);
dialog.Controls.Add(comboBox);

if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
label1.Text = comboBox.Items[comboBox.SelectedIndex].Text;
}
}
}
}

実際のダイアログボックスがこちら。
Csfilesavedlg

うーーーん。一応Windows7スタイルのダイアログボックスにラベルとコンボボックスが追加されていますが、何かちょっと違う感じがします。
追加するコントロールの位置や、ラベルのテキスト色を指定することが出来ないようですし、ファイルの種類を選択するコンボボックスもなくなっていますし微妙です・・・

メモ帳のダイアログボックスを見る限り何らかの方法があると思いますので調査継続でしょうか。
#て言うか、C#(.NET Framework)で実現出来ても、Delphiで実現出来ないとあんまり意味がないんですけどね。
 
 

|

« SimpleNovelDownloader ver1.1 | トップページ | SaveDialogを拡張してコントロールを追加する(その3:完結編) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/22406/66327010

この記事へのトラックバック一覧です: SaveDialogを拡張してコントロールを追加する(その2):

« SimpleNovelDownloader ver1.1 | トップページ | SaveDialogを拡張してコントロールを追加する(その3:完結編) »