c# – 在文本框中选择了某些文本

我在c#中实现了一个记事本应用程序,所有的功能都完美无缺,只有一件事情无法实现,编辑下拉菜单中有一些菜单,但是它们的启用属性必须根据文本框,我有两个情况的问题,我正在寻找一个事件,以更改他们启用的属性在这个事件的事件处理程序,这里是问题:

2)当在文本框中选择一些文本时,删除,复制和粘贴选项应该被启用.我应该检测它吗?我已经测试了texchanged事件,我已经写了一个条件,如下面的代码,但它没有工作只是剪贴板效果很好:

private void textBox1_TextChanged(object sender,EventArgs e)
    {
        if (textBox1.SelectionLength> 0)
            button1.Enabled = false;
        if (Clipboard.ContainsText())
            button2.Enabled = false;


    }

我应该如何解决我的问题,我必须使用一个文本框而不是一个富文本框.
任何建议将不胜感激.
非常感谢

解决方法

找出选择
if (textBox1.SelectionLength > 0)
{

}

对于剪贴板内容,
使用

System.Windows.Forms.Clipboard.getText();

检查剪贴板内容,

IDataObject iData = Clipboard.GetDataObject();
// Is Data Text?
if (iData.GetDataPresent(DataFormats.Text))
    label1.Text = (String)iData.GetData(DataFormats.Text);
else
label1.Text = "Data not found.";

这是在代码中实现的.您可以直接使用它如上

最重要的是,别忘了

public virtual string SelectedText { get; set; }

这是带菜单项的完整代码

private void Menu_copy(System.Object sender,System.EventArgs e)
{
// Ensure that text is selected in the text Box.    
if(textBox1.SelectionLength > 0)
    // copy the selected text to the Clipboard.
    textBox1.copy();
}

private void Menu_Cut(System.Object sender,System.EventArgs e)
{   
 // Ensure that text is currently selected in the text Box.    
 if(textBox1.SelectedText.Length > 0)
    // Cut the selected text in the control and paste it into the Clipboard.
    textBox1.Cut();
 }

Private void Menu_Paste(System.Object sender,System.EventArgs e)
{
// Determine if there is any text in the Clipboard to paste into the text Box. 
if(Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
    // Determine if any text is selected in the text Box. 
    if(textBox1.SelectionLength > 0)
    {
      // Ask user if they want to paste over currently selected text. 
      if(MessageBox.Show("Do you want to paste over current selection?","Cut Example",MessageBoxButtons.YesNo) == DialogResult.No)
         // Move selection to the point after the current selection and paste.
         textBox1.SelectionStart = textBox1.SelectionStart + textBox1.SelectionLength;
    }
    // Paste current text in Clipboard into text Box.
    textBox1.Paste();
  }
}


private void Menu_Undo(System.Object sender,System.EventArgs e)
{
// Determine if last operation can be undone in text Box.    
if(textBox1.CanUndo == true)
{
   // Undo the last operation.
   textBox1.Undo();
   // Clear the undo buffer to prevent last action from being redone.
   textBox1.ClearUndo();
}
}

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...