張貼萬一有人發現它有幫助。
,而不是試圖做的正是我本來也想,我已經想出了以下內容:
1-使用ContextMenuStrip
2 - 當用戶點擊ToolStripMenu
項目我顯示ContextMenuStrip
處的菜單項附近的位置如下圖所示:(注意定位仍然需要調整)
爲了得到這個工作,我建ContextMenuStrip
代碼運行時,可以根據情況動態構建ContextMenuStrip
中的項目。
代碼片段:
顯示ContextMenuStrip
被點擊菜單項時:
private void filterToolStripMenuItem_Click(object sender, EventArgs e)
{
contextMenuStrip1.Show(this, 180, 20);
}
構建ContextMenuStrip
:
if (protInfo.Name == "QCOM")
{
BroadCast = new CheckBox();
BroadCast.Text = "Date/Time Broadcast";
BroadCast.Checked = FlagSet(CurrentFilter, (Byte)Filter.DateTimeBC);
ToolStripControlHost Ch1 = new ToolStripControlHost(BroadCast);
GenPoll = new CheckBox();
GenPoll.Text = "Status Poll";
GenPoll.Checked = FlagSet(CurrentFilter, (Byte)Filter.GenStatusPoll);
ToolStripControlHost Ch2 = new ToolStripControlHost(GenPoll);
GenPollResp = new CheckBox();
GenPollResp.Text = "Status Poll Response";
GenPollResp.Checked = FlagSet(CurrentFilter, (Byte)Filter.GenStatusResponse);
ToolStripControlHost Ch3 = new ToolStripControlHost(GenPollResp);
Button btnDone = new Button();
btnDone.Text = "Done";
ToolStripControlHost Ch4 = new ToolStripControlHost(btnDone);
btnDone.Click += new EventHandler(btnDone_Click);
contextMenuStrip1.Items.Clear();
contextMenuStrip1.Items.Add(Ch1);
contextMenuStrip1.Items.Add(Ch2);
contextMenuStrip1.Items.Add(Ch3);
contextMenuStrip1.Items.Add(Ch4);
contextMenuStrip1.Enabled = true;
filterToolStripMenuItem.Enabled = true;
}
else
{
filterToolStripMenuItem.Enabled = false;
}
這可能不是最好的用戶界面設計,但它似乎工作。
這聽起來像一個可怕的用戶體驗,僅僅因爲它違背了菜單的概念。也許你應該重新思考如何顯示這個選項。 –
我同意肯德爾。他們可以一次做出所有選擇然後點擊「繼續按鈕」的模式形式會更有意義。 – krillgar
嗯,我想點擊「顯示」可以彈出一個小對話框。但是如果我真的想要創建上述用戶體驗呢? – Chimera