1.删除功能:
  我现在只能实现把选定的字符删除,怎样才能像真正的记事本那样按一下delete键就会把光标所处位置的后一个字符删除。2.右键菜单:
  我用了contextmenu控件,可是不会用,发现单击右键什么也没有出来。3.我想像真正的记事本那样在新建一个文件时它的撤销,剪切,复制删除功能的Enable属性是false,只有当我有过编辑的操作撤销功能的Enable才为true,只有当有字体是被选定时,剪切,复制,删除功能的Enable才为true,该用什么方法来实现这个监控啊?4.我每次保存后都不能保存字符的大小和所选字体,该怎样做啊?我用的是richtextbox控件。

解决方案 »

  1.   

    如果你是在Web中﹐就不用看下面的了
    1.不知你是怎么實現的﹐delete是RichTextBox的默認的動作﹐根本不需要編程啊
    2.contextmenu.Show(richtextbox1,坐標)﹐(在鼠標點擊事件中的參數e中有坐標)
    3.在一個Array中記錄一定次數的動作,保存或取消全部更改時設為0﹐只有Array的Length>0時﹐才允許销功能的Enable才为true。通過判斷richtextbox的SelectedText是否為空﹐來決定剪切,复制,删除功能的Enable。
    4.要保存字符的大小和所选字体﹐必須將內容保存為Rtf,例﹕richTextBox1.SaveFile(stream,System.Windows.Forms.RichTextBoxStreamType.RichText),讀取時也一樣﹐是設定它的Rtf.
      

  2.   

    可以继承richtextbox控件在里面加入消息相应处理函数,这个最好懂windows消息机制我每次保存后都不能保存字符的大小和所选字体,该怎样做啊?
    =========
    注意,字体的大小不是txt文件的属性,而是记事本控制的
      

  3.   

    sqfeiyu(流星雨) :
    1.不知你是怎么實現的﹐delete是RichTextBox的默認的動作﹐根本不需要編程啊  怎么我的richtextbox只有一个deleteAll方法.而且它的用法跟我所需的有很大出入喔.3.在一個Array中記錄一定次數的動作,保存或取消全部更改時設為0﹐只有Array的Length>0時﹐才允許销功能的Enable才为true。通過判斷richtextbox的SelectedText是否為空﹐來決定剪切,复制,删除功能的Enable。其实我就是想问怎样弄一个每个一段时间就检查Array变化的方法.
    4.要保存字符的大小和所选字体﹐必須將內容保存為Rtf,例﹕richTextBox1.SaveFile(stream,System.Windows.Forms.RichTextBoxStreamType.RichText),讀取時也一樣﹐是設定它的Rtf.可不可以具体一点啊?
    我本来是这样写的:
                SaveFileDialog save = new SaveFileDialog();            //設置屬性
                save.Title = "保存文件";
                save.CreatePrompt = true;
                save.Filter = "txt files(*.txt)|*.txt";
                if(save.ShowDialog()==DialogResult.OK) 
                {
                    //richtxtEdit.Text=saveFileDialog1.FileName; 
                    StreamWriter dd =new StreamWriter(save.FileName); 
                    dd.Write(richtxtEdit.Text); 
                    dd.Flush();
                    dd.Close();
                }该怎样去改呢?
      

  4.   

    1.太复杂,我只能把光标移到最后,就是给文本追加一个"";
    2.说明你的没有关联上,把richtextbox的属性ContextMenu与右键菜单关联一下,不可能不出来
    3.这几个变量标识的应该很明显了(没写全)
    private bool blCut = false;//判断剪切板里是否有内容
    //剪切
    private void menuX_Click(object sender, System.EventArgs e)
    {
    this.txtNote.Cut();
    blCut = true;
    this.menuX.Enabled = false;
    this.menuV.Enabled = true;
    } //撤销
    private void menuZ_Click(object sender, System.EventArgs e)
    {
    this.txtNote.Undo();
    } //复制
    private void menuC_Click(object sender, System.EventArgs e)
    {
    this.txtNote.Copy();
    }
    4.不知道你的保存是怎么写的,我的是
    //保存
    string sFileName;
    bool flag = false;
    private void menuSave_Click(object sender, System.EventArgs e)
    {
    if(sFileName == string.Empty)
    {
    this.saveFileDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
    if(this.saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
    sFileName = this.saveFileDialog1.FileName;
    this.fo.CreateFile(sFileName,this.txtNote.Text);
    flag = true;
    }
    }
    else
    {
    this.fo.CreateFile(sFileName,this.txtNote.Text);
    flag = true;
    }
    }
    其中flag是判断你有没有保存过,用来控制再次点击保存时不在弹出对话框
      

  5.   

    //就改這句
    dd.Write(richtxtEdit.Rtf)
      

  6.   

    问题又来了,我的程序改成dd.Write(richtxtEdit.Rtf)后就不能读取其他的txt文件拉。还有一个问题忘了问,就是在我还是dd.Write(richtxtEdit.text)时,若我是读取由window的记事本建立的txt文档时,若里面是有中文,那么它是乱码的。