3

私は自分自身ToolStripButtonをインスタンス化し、それをに追加していContextMenuStripます。ポップアップしますが、テキストが途切れます:

string[] layouts = new string[]{"Test 1", "Test 2", "Test 3"};
List<ToolStripButton> items = new List<ToolStripButton>();
foreach (string layout in layouts)
{
    ToolStripButton item = new ToolStripButton(layout, image, LayoutClicked);
    item.AutoSize = true;
    items.Add(item);
}
layoutMenus.Items.Clear();
layoutMenus.Items.AddRange(items.ToArray());
layoutMenus.Show(Cursor.Position.X, Cursor.Position.Y);

AutoSizeプロパティのようにテキストが途切れる理由はtrue何ですか?

4

6 に答える 6

4

奇妙; 私はこれを再現できます...(私にとって)本当に奇妙なことは、メニューを設定する.Widthと修正されることです...しかし、それを何かに設定します(値を完全に無視するようです):

layoutMenus.Width = 800; // could be 20, or 100 and would appear the same

それが機能するかどうかを確認してください。本当の意味はありませんが、私にはそうです。

平:

layoutMenus.Width++;
layoutMenus.Width--;

十分なスペースを残しますが、

layoutMenus.Width = layoutMenus.Width;

そうではありません(おそらく、変更がないことをチェックし、上記の副作用を無視します)。

于 2009-10-11T07:30:01.340 に答える
3

以前は機能していたコンテキスト メニューの実装をリファクタリングした後、同じ問題に直面しています。@PeteBaughmanのように、変更してもこれを修正できませんでしたContextMenuStrip.Width-実際、幅は変更ContextMenuStrip.MaximumSizeされませんでした(指定もされていませんでした: (0,0))。

ピートが提案したように、目に見えないアイテムを追加するとうまくいきました。さらにいくつかの実験を行った後、別の回避策を見つけましContextMenuStrip.PerformLayout()た。

(アイテムの追加前後の呼び出しが機能SuspendLayoutしませんでした。)ResumeLayout


更新:本当の問題は、次のように呼び出されたときに通常 a を作成する aに aToolStripButtonが追加されることです。ContextMenuStripToolStripMenuItem

contextMenuStrip.Items.Add("Hello world"); // Returns a ToolStripMenuItem

PerformLayout()適切な種類のアイテムを作成した後、呼び出しを省略できました。

于 2014-04-07T12:43:07.253 に答える
2

2年後、同じ問題に遭遇しました。MaxSize が設定されておらず、Width プロパティに触れても役に立ちませんでした。私の ContextMenuStrip には、「サポートされていません」というグレー表示されたボタンが 1 つしか含まれていませんでした。「Not Supp」に切り捨てられました。

ContextMenuStrip の最後にダミー項目を追加し、その可視性を False に設定する必要がありました。次に、ContextMenuStrip は、私が実際に表示したいと思っていた最初の項目を表示するのに十分な幅がありました。

リンクはこちら

于 2012-08-02T22:47:18.673 に答える
1

私も同じ問題を抱えてる。MaxSizeこれらすべてを試してみたところ、 のように が誤って設定されていることが判明しました(200, 0)(0,0)問題を解決するには、リセットしてください。

于 2010-11-29T21:59:17.890 に答える
1

同様の問題があります。メニュー項目一覧にチェックボックスを追加したい。そのためには、チェックボックスを ToolStripControlHost に追加してから、ToolStripControlHost を ToolStripMenuItem オブジェクトに追加する必要があります。最後のチェックボックスの名前は常に 3 文字で切り捨てられます。私の解決策は、次のように最後の項目ホストの AutoSize を切り替えることです。

Dim chkbox As System.Windows.Forms.CheckBox = New System.Windows.Forms.CheckBox()
chkbox.Text = "xxxxx"
Dim tshost As ToolStripControlHost = New ToolStripControlHost(chkbox)
tsmiAssemblySpecificTools.DropDownItems.Add(tshost)
                    tshost.AutoSize = False
                    tshost.AutoSize = True

AutoSize トグルは、ホスト アイテムがリストに追加された後に実行する必要があります。

于 2019-05-22T07:27:00.913 に答える