日期:2014-05-19  浏览次数:20771 次

我在做一个简单的记事本程序,有很多问题出现啊,向各位高手求救
1.删除功能:
    我现在只能实现把选定的字符删除,怎样才能像真正的记事本那样按一下delete键就会把光标所处位置的后一个字符删除。

2.右键菜单:
    我用了contextmenu控件,可是不会用,发现单击右键什么也没有出来。

3.我想像真正的记事本那样在新建一个文件时它的撤销,剪切,复制删除功能的Enable属性是false,只有当我有过编辑的操作撤销功能的Enable才为true,只有当有字体是被选定时,剪切,复制,删除功能的Enable才为true,该用什么方法来实现这个监控啊?

4.我每次保存后都不能保存字符的大小和所选字体,该怎样做啊?我用的是richtextbox控件。

------解决方案--------------------
如果你是在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.
------解决方案--------------------
可以继承richtextbox控件

在里面加入消息相应处理函数,这个最好懂windows消息机制

我每次保存后都不能保存字符的大小和所选字体,该怎样做啊?
=========
注意,字体的大小不是txt文件的属性,而是记事本控制的
------解决方案--------------------
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是判断你有没有保存过,用来控制再次点击保存时不在弹出对话框
------解决方案--------------------
//就改這句
dd.Write(richtxtEdit.Rtf)