C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: コンボボックスの▼について


(過去ログ 62 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■35673 / inTopicNo.1)  コンボボックスの▼について
  
□投稿者/ ひろこ (14回)-(2009/05/12(Tue) 12:54:26)

分類:[.NET 全般] 

こんにちは。
コンボボックスのドロップダウン部分を表示する▼ですが、非表示にする事は可能でしょうか?
スペースの問題で通常は▼を非表示にしてF1をするとドロップダウンリストを表示するようにしたいと考えております。

どなたかご存じの方いらっしゃいましたらよろしくお願い致します。
引用返信 編集キー/
■35674 / inTopicNo.2)  Re[1]: コンボボックスの▼について
□投稿者/ 魔界の仮面弁士 (1061回)-(2009/05/12(Tue) 12:59:02)
No35673 (ひろこ さん) に返信
> スペースの問題で通常は▼を非表示にしてF1をするとドロップダウンリストを表示するようにしたいと考えております。

ComboBox ではなく TextBox (もしくは Label) 等を配置しておき、F1 キーの押下に応じて
ListBox を別窓表示(もしくは、ComboBoxを表示)するように作りかえてみては如何でしょう。
引用返信 編集キー/
■35727 / inTopicNo.3)  Re[1]: コンボボックスの▼について
□投稿者/ hirosi (15回)-(2009/05/13(Wed) 00:29:14)
No35673 (ひろこ さん) に返信
> こんにちは。
> コンボボックスのドロップダウン部分を表示する▼ですが、非表示にする事は可能でしょうか?
> スペースの問題で通常は▼を非表示にしてF1をするとドロップダウンリストを表示するようにしたいと考えております。
私の場合、テキストボックスにしてドロップダウンの部分はコンテキストメニューにしちゃったりします(;^_^A アセアセ・・・
意外とコンボより使いやすかったりします。
読み飛ばしてくださいm(__)m

引用返信 編集キー/
■35728 / inTopicNo.4)  Re[1]: コンボボックスの▼について
□投稿者/ mitchin (2回)-(2009/05/13(Wed) 00:50:21)
No35673 (ひろこ さん) に返信
> こんにちは。
> コンボボックスのドロップダウン部分を表示する▼ですが、非表示にする事は可能でしょうか?
> スペースの問題で通常は▼を非表示にしてF1をするとドロップダウンリストを表示するようにしたいと考えております。

DropDownStyle を「Simple」にすれば外観は TextBox と同じになります。
F1でのリスト表示はプロパティの設定だけでできるかどうかは判りませんが・・・

引用返信 編集キー/
■35730 / inTopicNo.5)  Re[2]: コンボボックスの▼について
□投稿者/ 魔界の仮面弁士 (1064回)-(2009/05/13(Wed) 01:23:40)
No35728 (mitchin さん) に返信
> DropDownStyle を「Simple」にすれば外観は TextBox と同じになります。

Simple は、リスト部分が(ドロップダウンではなく)常に表示された状態の ComboBox ですね。

コントロールの高さを十分に小さくしてある場合には、TextBox のようにも見えなくも無いですが、
通常は、Simple にすると「TextBox と ListBox の組み合わせ」という外観になるかと思います。
引用返信 編集キー/
■35736 / inTopicNo.6)  Re[3]: コンボボックスの▼について
□投稿者/ ひろこ (15回)-(2009/05/13(Wed) 09:18:09)
皆さんありがとうございます。

見た目はSimpleでドロップダウン部分の表示・非表示を切り替える方法を探してみたいと思います。
SimpleにするとDroppedDownプロパティがうまく動作しないようですが、無効になるのでしょうか?

引用返信 編集キー/
■35793 / inTopicNo.7)  Re[4]: コンボボックスの▼について
□投稿者/ まどか (609回)-(2009/05/13(Wed) 21:35:29)
> SimpleにするとDroppedDownプロパティがうまく動作しないようですが、無効になるのでしょうか?

お分かりだと思いますが常に表示されているわけで、
開いた閉じたという動作が無い以上、そのイベントを利用することは無意味というか利用してはいけません。

あと気になるのは、実現できたとしたら見た目がテキストボックスになるわけですが
ユーザーはどうやってその項目に「リストがある、表示できる」ということを知るのでしょうか?
もし、「常に、もしくはフォーカスがあるときにステータスバーに操作方法の説明が表示される」
といったようなことが無いのであれば、ユーザーインターフェースとしては問題があると思っています。

実現方法としては魔界の仮面弁士さんが提案されているような、ユーザーコントロールを作るのが無難かなと思います。

引用返信 編集キー/
■35818 / inTopicNo.8)  Re[5]: コンボボックスの▼について
□投稿者/ M@X (1回)-(2009/05/14(Thu) 14:06:15)
お初です。

自分の作ったコントロールの簡易版ですが、こんなんでどうでしょう?
ListBoxを変更すれば他のコントロールも乗せれますよ。

Public Class DropDownTextBox
    Inherits TextBox

    Private WithEvents ListBox1 As New ListBox
    Private ToolStripDropDown1 As New ToolStripDropDown

    Public Sub New()
        Dim ToolStripControlHost1 As New ToolStripControlHost(ListBox1)
        ToolStripControlHost1.AutoSize = False
        ToolStripControlHost1.Margin = New Padding(0)

        ToolStripDropDown1.DropShadowEnabled = False
        ToolStripDropDown1.AutoSize = True
        ToolStripDropDown1.Padding = New Padding(0)
        ToolStripDropDown1.Items.Add(ToolStripControlHost1)
    End Sub

    Public ReadOnly Property Items() As ListBox.ObjectCollection
        Get
            Return ListBox1.Items
        End Get
    End Property

    Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
        Select Case e.KeyCode
            Case Keys.F1
                ListBox1.Height = ListBox1.Items.Count * (ListBox1.ItemHeight + 1)
                ToolStripDropDown1.Show(Me, -2, Me.Height - 3)
        End Select
        MyBase.OnKeyDown(e)
    End Sub

    Private Sub ListBox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseClick
        Me.Text = ListBox1.SelectedItem.ToString
        ToolStripDropDown1.Hide()
    End Sub
End Class

引用返信 編集キー/
■35837 / inTopicNo.9)  Re[6]: コンボボックスの▼について
□投稿者/ ひろこ (16回)-(2009/05/14(Thu) 20:11:55)
M@X様
サンプルプログラムありがとうございます。
魔界の仮面弁士様がおっしゃる通り、頂いたコードを参考にテキストボックス+リストボックスと言う形で実現したいと思います。

皆様ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -