问题描述
有没有人实现过C#winform中系统菜单功能(主要指-剪切、粘帖、删除,全选,撤消,重做)这些功能???
解决方案
解决方案二:
我曾做过记事本实现过这些功能,你上网搜搜吧,应该有许多的
解决方案三:
switch(e.Button.ToolTipText){case"加粗":if(this.richTextBox1.SelectionFont.Bold)this.richTextBox1.SelectionFont=newFont(this.richTextBox1.SelectionFont.FontFamily,this.richTextBox1.SelectionFont.Size,FontStyle.Regular);elsethis.richTextBox1.SelectionFont=newFont(this.richTextBox1.SelectionFont.FontFamily,this.richTextBox1.SelectionFont.Size,FontStyle.Bold);break;case"斜体":if(this.richTextBox1.SelectionFont.Italic)this.richTextBox1.SelectionFont=newFont(this.richTextBox1.SelectionFont.FontFamily,this.richTextBox1.SelectionFont.Size,FontStyle.Regular);elsethis.richTextBox1.SelectionFont=newFont(this.richTextBox1.SelectionFont.FontFamily,this.richTextBox1.SelectionFont.Size,FontStyle.Italic);break;case"下划线":if(this.richTextBox1.SelectionFont.Underline)this.richTextBox1.SelectionFont=newFont(this.richTextBox1.SelectionFont.FontFamily,this.richTextBox1.SelectionFont.Size,FontStyle.Regular);elsethis.richTextBox1.SelectionFont=newFont(this.richTextBox1.SelectionFont.FontFamily,this.richTextBox1.SelectionFont.Size,FontStyle.Underline);break;case"左对齐":this.richTextBox1.SelectionAlignment=HorizontalAlignment.Left;break;case"居中":this.richTextBox1.SelectionAlignment=HorizontalAlignment.Center;break;case"右对齐":this.richTextBox1.SelectionAlignment=HorizontalAlignment.Right;break;case"剪贴":Clipboard.SetDataObject(this.richTextBox1.SelectedText,true);this.richTextBox1.SelectedText="";break;case"粘贴":this.richTextBox1.SelectedText=(string)Clipboard.GetDataObject().GetData(DataFormats.Text);break;case"删除":this.richTextBox1.SelectedText="";break;case"撤消":this.richTextBox1.Undo();break;case"重复":this.richTextBox1.Redo();break;case"表格":DataTabledt=newDataTable();dt.Columns.Add();dt.Columns.Add();dt.Columns.Add();DataRowdr=dt.NewRow();dr[0]="aa";dr[1]="aa";dr[2]="aa";dt.Rows.Add(dr);dr=dt.NewRow();dr[0]="bb";dr[1]="bb";dr[2]="bb";dt.Rows.Add(dr);Clipboard.SetDataObject(dt,true);//this.richTextBox1.SelectedText=Clipboard.GetDataObject().GetData(DataFormats.Text).ToString();this.richTextBox1.Paste();MessageBox.Show(this.richTextBox1.Rtf);break;case"超链接":break;case"图片":if(this.openFileDialog1.ShowDialog()==DialogResult.OK){this.openFileDialog1.Filter="图片文件|*.jpg|所有文件|*.*";Clipboard.SetDataObject(Image.FromFile(this.openFileDialog1.FileName),true);this.richTextBox1.Paste();}break;case"左缩进":richTextBox1.SelectionBullet=true;richTextBox1.SelectionIndent=8;richTextBox1.SelectionHangingIndent=3;richTextBox1.SelectionRightIndent=12;break;case"右缩进":break;case"字体":this.fontDialog1.ShowColor=true;if(fontDialog1.ShowDialog()!=DialogResult.Cancel){this.richTextBox1.SelectionFont=this.fontDialog1.Font;this.richTextBox1.SelectionColor=this.fontDialog1.Color;}break;}
解决方案四:
有没有更好的方法?我指的是实现类似于windows系统的功能,而不是针对某一个控件的,如果在一个小软件中有多个这样的控件,那这样写不是很麻烦???我想是不是要用到api等?谢谢
解决方案五:
捕获KeyDown消息然后在OnKeyDown的去处理
解决方案六:
应该是调API实现的