DOBON.NET DOBON.NETプログラミング掲示板過去ログ

アドレスバーを作りたい

環境/言語:[C#]
分類:[.NET]

いつも参考にさせて頂いてます。

Windowsフォームアプリで、エクスプローラのアドレスバーを作りたい
と思っているのですが、標準のコントロールにはありません。
アドレスバーを作成するにはどのようにすればよいのでしょうか。

ヒントだけでも結構ですので、アドバイスお願いいたします。
こちらのサイトの Tips はヒントにならなかったのでしょうか?

ToolBarにComboBoxを追加する
http://dobon.net/vb/dotnet/control/tbaddcontrol.html
■No11163に返信(深山さんの記事)
>  こちらのサイトの Tips はヒントにならなかったのでしょうか?
>
> ToolBarにComboBoxを追加する
> http://dobon.net/vb/dotnet/control/tbaddcontrol.html


深山さん、情報ありがとうございます。

上記のリンクを確認しました。
アドレスバーを作るには、
・ツールバーの中にコンボボックスを置く
・コンボボックスのアイテムの表示は、アイコン表示のためオーナードロー(?)で行う
・コンボのリストは動的に作成する
という形になるのかなと思いました。

また何かありましたら質問させてください。
よろしくお願いいたします。
おかげさまで、コンボのリストの項目は以下のようにすることで
アイコンを含んだリストにすることができました。


private void comboBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{        
    SolidBrush bc;    // バックカラー
    SolidBrush fc;    // フロントカラー

    // 選択状態かどうか
    if (e.State == DrawItemState.Selected)
    {
        bc = new SolidBrush(Color.Navy);
        fc = new SolidBrush(Color.White);
    }
    else
    {
        bc = new SolidBrush(Color.White);
        fc = new SolidBrush(Color.Black);
    }

    // 背景を描画
    e.Graphics.FillRectangle(bc, e.Bounds);
    // アイコンの描画のつもり
    e.Graphics.FillRectangle(Brushes.Black, new Rectangle(e.Bounds.X + 1, e.Bounds.Y + 1, e.Bounds.Height - 1, e.Bounds.Height - 1));
    // テキストを描画
    e.Graphics.DrawString(comboBox1.Items[e.Index].ToString(), e.Font, fc, e.Bounds.Height + 2, e.Bounds.Y + 2);
}


そこで、リストの内容を選択したときにコンボボックスのTextへアイコン
付きで文字列を表示させたいのですが、方法が見つからずにいます。
たびたびで申し訳ありませんが、コンボボックスのTextへアイコン付きで
表示を行う方法をご教授いただけないでしょうか。

よろしくお願いいたします。
> そこで、リストの内容を選択したときにコンボボックスのTextへアイコン
> 付きで文字列を表示させたいのですが、方法が見つからずにいます。
> たびたびで申し訳ありませんが、コンボボックスのTextへアイコン付きで
> 表示を行う方法をご教授いただけないでしょうか。

 DropDownStyle プロパティを DropDownList にすれば表示されるようですけれど、それでは不味いでしょうか?

【参考】
Where's the ImageCombo control?
http://www.codeproject.com/cs/combobox/ImageCombo_NET.asp

 尚 Spy++ で確認したところ、エクスプローラのアドレスバーは『アイコンを表示しているコンボボックス』と、『テキスト部分が編集できるコンボボックス』を二つ重ねて配置しているようでした。
>  DropDownStyle プロパティを DropDownList にすれば表示されるようですけれど、それでは不味いでしょうか?
テキスト部分を編集したいと思っていたので、この方法は試していませんでした。すみません。。

>  尚 Spy++ で確認したところ、エクスプローラのアドレスバーは『アイコンを表示しているコンボボックス』と、『テキスト部分が編集できるコンボボックス』を二つ重ねて配置しているようでした。
単一のコンボボックスだけで作成しようとした前提が間違っていたのですね。
テキストを編集する部分を別コントロールにすればいけそうです。

深山さん、何度も教えていただいてありありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板