日期:2014-05-18  浏览次数:20680 次

新人学C#的一些问题。。求解答
最近一直在看C#入门经典。。。今天看做15章的一个简单文本编辑器时候遇到了一些问题。。
第一:在写一个可以把选中文本在斜体字和正常字切换的按钮。。但写完了之后只能变成斜体就变不回来了。。
但是和他类好似的代码。都可以实现转换 以下是代码。。
private void Italic_Click(object sender, EventArgs e)
  {
  Font oldFont;
  Font newFont;
  oldFont = this.richTextBoxText.Font;
  if (oldFont.Italic)
  newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Italic);
  else
  newFont = new Font(oldFont, oldFont.Style | FontStyle.Italic);
  this.richTextBoxText.SelectionFont = newFont;
  this.richTextBoxText.Focus();
  }
还有在写设置字体大小的文本框的Validated时候按书上的代码是这样的
private void textBoxSize_Validated(object sender, EventArgs e)
  {
  ApplyTextSize(txt.Text);
  this.richTextBoxText.Focus();
  }
但是这之中的txt是在Keypress事件中定义的代码如下
private void textBoxSize_KeyPress(object sender, KeyPressEventArgs e)
  {
  if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13)
  e.Handled = true;
  else if (e.KeyChar == 13)
  {
  TextBox txt = (TextBox)sender;
  if (txt.Text.Length > 0)
  ApplyTextSize(txt.Text);
  e.Handled = true;
  this.richTextBoxText.Focus();
  }
  }
编译器也会报错。。我把txt改成this的话只要运行想改变字体大小就会出错。。。
求救。。。

------解决方案--------------------
将oldFont = this.richTextBoxText.Font;改成oldFont = this.richTextBoxText.SelectionFont;即刻
------解决方案--------------------
正解
探讨

你前后两个设置的不一致,一个使用的font一个使用的selectionfont自然就改不过来了,将前后统一一下

------解决方案--------------------
改统一吧