당신은
1 단계
는 새 Windows Forms 응용 프로그램을 만들려면 다음과 TextBox
과 ContextMenuStrip
제어기로 드래그 할 수 있습니다 형태. TextBox의 MultiLine 속성을 true로 설정하고 ContextMenuStrip 속성을 contextMenuStrip1로 설정하여 TextBox의 기본 ContextMenu (다음 그림 참조)를 재정의합니다. 참조 : 기본 TextBox 컨트롤의 ContextMenuStrip을, 실행 취소, 잘라 내기, 복사, 붙여 넣기에서와 ContextMenuStrip을 여섯 개 메뉴 항목을 추가, 삭제, 3 개 구분으로 "모두 선택"2
단계 실행 취소, 삭제 및 "모두 선택"메뉴 항목 후에. TextBox의 글꼴, 텍스트 색상 및 배경색을 변경하려면 ContextMenuStrip 글꼴, Forecolor 및 Backcolor에서 세 가지 메뉴 항목을 추가하십시오. contextMenuStrip1은 위의 첫 번째 그림과 같아야합니다. 컨텍스트 메뉴를 추가하는 방법은 이전 기사를 참조하십시오.
이 메뉴 항목의 Name 속성은 텍스트와 동일하게 설정하십시오. 메뉴 항목 "실행 취소"와 마찬가지로 이름을 "실행 취소"로 설정하십시오. 3
단계는 특정 조건 (설명 참조)에 따라 ToolStripMenuItems을 사용하지 contextMenuStrip1의 오프닝 이벤트에 다음 코드를 추가합니다. 참조 :
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
예, 이것이 제가 원하는 것입니다! :) – brutus8890