您可以按照以下步驟
步驟1
創建一個新的Windows窗體應用程序,並將一個TextBox
和ContextMenuStrip
控制到表格。將TextBox的MultiLine屬性設置爲true,將ContextMenuStrip屬性設置爲contextMenuStrip1以覆蓋TextBox的默認ContextMenu(如下圖所示)。請參閱:
步驟2
中的ContextMenuStrip增加6個菜單項中的TextBox控件的默認的ContextMenuStrip,撤銷,剪切,複製,粘貼,刪除,並與三個分離器「全選」撤銷後,刪除和「全選」菜單項。在ContextMenuStrip字體,前景色和背景色中添加三個菜單項,用於更改文本框的字體,文本顏色和背景色。 contextMenuStrip1應該像上面的第一張圖一樣。你可以參考我以前的文章來添加一個上下文菜單。
將這些菜單項的Name屬性設置爲與它們的Text相同。對於菜單項「撤消」,將其名稱設置爲「撤消」。
步驟3
添加以下代碼中contextMenuStrip1開幕事件禁用基於某些條件(見註釋)ToolStripMenuItems。請參閱:
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
// Disable Undo if CanUndo property returns false
if (textBox1.CanUndo)
{
contextMenuStrip1.Items["Undo"].Enabled = true;
}
else
{
contextMenuStrip1.Items["Undo"].Enabled = false;
}
// Disable Cut, Copy and Delete if any text is not selected in TextBox
if (textBox1.SelectedText.Length == 0)
{
contextMenuStrip1.Items["Cut"].Enabled = false;
contextMenuStrip1.Items["Copy"].Enabled = false;
contextMenuStrip1.Items["Delete"].Enabled = false;
}
else
{
contextMenuStrip1.Items["Cut"].Enabled = true;
contextMenuStrip1.Items["Copy"].Enabled = true;
contextMenuStrip1.Items["Delete"].Enabled = true;
}
// Disable Paste if Clipboard does not contains text
if (Clipboard.ContainsText())
{
contextMenuStrip1.Items["Paste"].Enabled = true;
}
else
{
contextMenuStrip1.Items["Paste"].Enabled = false;
}
// Disable Select All if TextBox is blank
if (textBox1.Text.Length == 0)
{
contextMenuStrip1.Items["SelectAll"].Enabled = false;
}
else
{
contextMenuStrip1.Items["SelectAll"].Enabled = true;
}
}
步驟4
添加以下代碼ToolStripMenuItems的單擊事件:
private void Undo_Click(object sender, EventArgs e)
{
textBox1.Undo();
}
private void Cut_Click(object sender, EventArgs e)
{
textBox1.Cut();
}
private void Copy_Click(object sender, EventArgs e)
{
textBox1.Copy();
}
private void Paste_Click(object sender, EventArgs e)
{
textBox1.Paste();
}
private void Delete_Click(object sender, EventArgs e)
{
int SelectionIndex = textBox1.SelectionStart;
int SelectionCount = textBox1.SelectionLength;
textBox1.Text = textBox1.Text.Remove(SelectionIndex, SelectionCount);
textBox1.SelectionStart = SelectionIndex;
}
private void SelectAll_Click(object sender, EventArgs e)
{
textBox1.SelectAll();
}
private void Font_Click(object sender, EventArgs e)
{
FontDialog fontDialog = new FontDialog();
if (fontDialog.ShowDialog() == DialogResult.OK)
{
textBox1.Font = fontDialog.Font;
}
}
private void Forecolor_Click(object sender, EventArgs e)
{
ColorDialog colorDialog = new ColorDialog();
if (colorDialog.ShowDialog() == DialogResult.OK)
{
textBox1.ForeColor = colorDialog.Color;
}
}
private void Backcolor_Click(object sender, EventArgs e)
{
ColorDialog colorDialog = new ColorDialog();
if (colorDialog.ShowDialog() == DialogResult.OK)
{
textBox1.BackColor = colorDialog.Color;
}
}
你想打開你的元素上下文菜單? – KF2 2013-04-20 11:03:07
是的,這是我想要的! :) – brutus8890 2013-04-20 11:18:45