有关c#的一个问题
我刚学c#,在《c#入门》中有如下代码
private void toolStripButtonItalic_CheckedChanged(object sender, EventArgs e)
         {
             Font oldFont;
             Font newFont;
             bool checkState = ((ToolStripButton)sender).Checked;
             oldFont = this.richTextBox1.SelectionFont;
             if (!checkState)
                 newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Italic);
             else
                 newFont = new Font(oldFont, oldFont.Style | FontStyle.Italic);
             this.richTextBox1.SelectionFont = newFont;
             this.richTextBox1.Focus();
             this.ToolStripMenuItemItalic.CheckedChanged -= new EventHandler(ToolStripMenuItemItalic_CheckedChanged);
             this.ToolStripMenuItemItalic.Checked = checkState;
             this.ToolStripMenuItemItalic.CheckedChanged += new EventHandler(ToolStripMenuItemItalic_CheckedChanged);
        }
    private void ToolStripMenuItemItalic_CheckedChanged(object sender, EventArgs e)
         {
             this.toolStripButtonItalic.Checked = ToolStripMenuItemItalic.Checked;
         }为什么要加this.ToolStripMenuItemItalic.CheckedChanged -= new EventHandler(ToolStripMenuItemItalic_CheckedChanged);和this.ToolStripMenuItemItalic.CheckedChanged += new EventHandler(ToolStripMenuItemItalic_CheckedChanged);这两行代码?我试着把这两行代码注释掉,和不加运行效果一样,麻烦这里的高手指点一下!
------解决方案--------------------
this.ToolStripMenuItemItalic.CheckedChanged -= new EventHandler(ToolStripMenuItemItalic_CheckedChanged);
是将事件取消掉,
这样后面执行 this.ToolStripMenuItemItalic.Checked = checkState; 这句的时候就不会触发事件;
(如果没注销,这句就会触发事件)
执行完这句重新把事件启用。
this.ToolStripMenuItemItalic.CheckedChanged += new EventHandler(ToolStripMenuItemItalic_CheckedChanged);