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

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

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

ToolStripMenuItemのドロップダウンの高さ調節

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

■85182 / inTopicNo.1)  ToolStripMenuItemのドロップダウンの高さ調節
  
□投稿者/ 赤坂太郎 (1回)-(2017/09/18(Mon) 15:27:25)

分類:[VB.NET/VB2005 以降] 

Win10 64bit・VB 2017を使っています。
以下のようにして、処理の中でToolStripMenuItemのDropDownItemsにメニューを追加しているのですが、TestToolStripMenuItemをクリックすると、メニューが縦に画面いっぱいにズラッと表示されるのを防ぎたいのです。
このドロップダウンの高さを調節する方法はないでしょうか。

Public Class Form1
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        Dim test(100) As ToolStripMenuItem

        'ダミーデータの作成
        For I = 0 To 100
            test(I) = New ToolStripMenuItem
            test(I).Text = CStr(I)
            TestToolStripMenuItem.DropDownItems.Add(test(I))
        Next
    End Sub
End Class

引用返信 編集キー/
■85186 / inTopicNo.2)  Re[1]: ToolStripMenuItemのドロップダウンの高さ調節
□投稿者/ WebSurfer (1311回)-(2017/09/18(Mon) 19:16:44)
No85182 (赤坂太郎 さん) に返信

何を作っているのでしょう? Windows Forms アプリ?
引用返信 編集キー/
■85187 / inTopicNo.3)  Re[2]: ToolStripMenuItemのドロップダウンの高さ調節
□投稿者/ 赤坂太郎 (2回)-(2017/09/18(Mon) 20:02:03)
そうです。
Windows Forms アプリです。
引用返信 編集キー/
■85190 / inTopicNo.4)  Re[3]: ToolStripMenuItemのドロップダウンの高さ調節
□投稿者/ WebSurfer (1312回)-(2017/09/18(Mon) 21:48:12)
No85187 (赤坂太郎 さん) に返信
> そうです。
> Windows Forms アプリです。

最初にそれを書いたほうが親切だと思うのですがいかがでしょうか?
引用返信 編集キー/
■85191 / inTopicNo.5)  Re[1]: ToolStripMenuItemのドロップダウンの高さ調節
□投稿者/ Azulean (866回)-(2017/09/18(Mon) 22:12:38)
回答ではありませんが…。

No85182 (赤坂太郎 さん) に返信
> メニューが縦に画面いっぱいにズラッと表示されるのを防ぎたいのです。
> このドロップダウンの高さを調節する方法はないでしょうか。

たとえば、10 個までしか表示しないといった感じですか?
それより先はスクロールでもされるイメージですかね…?

もっとも、縦にずらっと並ばなくても、100 個もあったら使いづらいことは変わらないので、UI デザインの再検討をおすすめします。
(全部見えていようが、見えていまいが、スクロールして 1 個を探し出すなんて、面倒に感じるユーザーが多いはず)

一案:10 個ずつメニュー階層を分ける。1-10, 11-20, 21-30 といった階層を設け、それぞれの下に 10 個ずつぶら下げる。
(よい UX ではないですが、マシにはなるかと…)
引用返信 編集キー/
■85192 / inTopicNo.6)  Re[1]: ToolStripMenuItemのドロップダウンの高さ調節
□投稿者/ shu (1054回)-(2017/09/18(Mon) 22:34:15)
No85182 (赤坂太郎 さん) に返信


ToolStripControlHostを使うとToolStripItemとして自由にコントロールを配置できるので
例えばリストボックスを配置するなどすると実現できそうです。

MSDNに実装例が載っているので参考にしてみてください。
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.toolstripcontrolhost(v=vs.110).aspx
引用返信 編集キー/
■85204 / inTopicNo.7)  Re[4]: ToolStripMenuItemのドロップダウンの高さ調節
□投稿者/ 赤坂太郎 (3回)-(2017/09/19(Tue) 19:35:38)
WebSurfer さん
そうですね、気を付けます。

Azulean さん
確かに数が多いと大変ですね。
メニュー以外に表示する方法を検討してみます。

shu さん
リストボックスも良さそうですね。


質問の件は以下のような方法で実現できました。
ご回答ありがとうございました。

    Dim CMenuStrip As ContextMenuStrip
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        CMenuStrip = New ContextMenuStrip

        'ダミーデータの作成
        For I = 0 To 100
            CMenuStrip.Items.Add(CStr(I))
        Next

        CMenuStrip.MaximumSize = New Size(300, 600)
    End Sub
    Private Sub TestToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TestToolStripMenuItem.Click
        CMenuStrip.Show(Me, Me.PointToClient(Control.MousePosition))
    End Sub

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ