2011年9月6日火曜日

wpf : ComboBoxにEnumをバインドして別の文字列を割り当てる

ComboBoxにEnumをバインドして別の文字列を割り当てる方法を書きます。 参考にしたのはこちらの、一般的なクラスをComboBoxの項目に登録する方法です。

Enumだけを対象にするなら違うやり方もあるようです。

以降、最初に見つけたやり方を元にしたコードについて説明します。

Enumとそれをプロパティとして持ったクラスはこんな感じ。

2011年8月26日金曜日

wpf : ディスプレイの解像度を調べる

wpfのライブラリをちょっと調べたところ、ディスプレイの解像度を調べる方法はみつかりませんでした。 通常の、.NET Frameworkのwpfじゃない部分を使って解像度を調べます。 MainWindowがあるディスプレイの解像度を調べるには、

WindowInteropHelper wih = new WindowInteropHelper(App.Current.MainWindow);
System.Windows.Forms.Screen screen = System.Windows.Forms.Screen.FromHandle(wih.Handle);
System.Drawing.Rectangle bounds = screen.Bounds;

System.Windows.FormsとSystem.Drawingの参照が必要です。 ここで使っているRectangleはwpfのシェイプではないので注意。 名前が衝突しないようにusingを使用せずに↑のように名前空間ごと全部書くか、

using DNETDrawing = System.Drawing;
...
DNETDrawing.Rectangle bounds = screen.Bounds;

などのように書きましょう。

2011年8月25日木曜日

wpf : 以前に表示されていないWindowにOwnerプロパティを設定することはできません

wpfに次のような例外メッセージがあります。

  • 以前に表示されていないWindowにOwnerプロパティを設定することはできません。

InvalidOperationExceptionのメッセージです。 こんなコードで再現できます。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        Window w = new Window();
        w.Owner = this;
        w.Show();
    }
}

2011年8月24日水曜日

オーディオ分配ケーブルと音量調節でスピーカとヘッドホンを使い分けれた

ちょっと前にPCで音を聞くとき、ソフトウェアでスピーカとヘッドホンを切り替える方法を投稿しました。 その投稿でオーディオ切り替え機器についてもふれています。

切り替える方法を調べたのは、スピーカで大きな音を出すと近所迷惑になるので、大きめの音で聴きたいとき=ヘッドホン、普段=スピーカと使い分けるためです。

オーディオ切り替え機器、立ち寄った店で探してみたんですけど売ってません。 今まで家電量販店3件と、その他数店をまわってみたけど見つかりませんでした。 こりゃ近場で買うの無理かな? 1つ700円くらいの商品なのでアマゾンで買うのもバカらしい気がします。 当面、切り替え器はあきらめることにしました。

そういえば、ヨドバシで音量調節が付いたオーディオ延長ケーブルは売っていました。 これと分配ケーブルを組み合わせるしかないかな?