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

C#中多窗体程序设计问题
我写的是多窗口MDI文档支持,能对文件进行文字格式的修改程序,然而用下面的代码却不能对文字格式进行修改,请大家帮忙找下问题

父窗体的相关代码:
  private   void   menuItem9_Click(object   sender,   System.EventArgs   e)
{
ChildForm1   Child=new   ChildForm1();
Child.MdiParent=this;
Child.Changefont();
}


子窗体的相关代码:
public   void   Changefont()
{fontDialog1.Font=richTextBox1.SelectionFont;
if(fontDialog1.ShowDialog()==DialogResult.OK)
richTextBox1.SelectionFont=fontDialog1.Font;
        }

------解决方案--------------------
private delegate void changeFontHandler();

public void Changefont()
{
if(this.InvokeRequired)
{
changeFontHandler = delegate(){
fontDialog1.Font=richTextBox1.SelectionFont;
if(fontDialog1.ShowDialog()==DialogResult.OK)
richTextBox1.SelectionFont=fontDialog1.Font;
};
this.Invoke(changeFontHandler);
}
else
{
fontDialog1.Font=richTextBox1.SelectionFont;
if(fontDialog1.ShowDialog()==DialogResult.OK)
richTextBox1.SelectionFont=fontDialog1.Font;
}
}
------解决方案--------------------
写少了些东东, 这样

private delegate void changeFontHandler();

public void Changefont()
{
if (this.InvokeRequired)
{
changeFontHandler aHandler = delegate()
{
fontDialog1.Font = richTextBox1.SelectionFont;
if (fontDialog1.ShowDialog() == DialogResult.OK)
richTextBox1.SelectionFont = fontDialog1.Font;
};
this.Invoke(aHandler);
}
else
{
fontDialog1.Font = richTextBox1.SelectionFont;
if (fontDialog1.ShowDialog() == DialogResult.OK)
richTextBox1.SelectionFont = fontDialog1.Font;
}
}
------解决方案--------------------
把错贴出来 ...
------解决方案--------------------
你想干什么?为什么这么复杂?
___________________________________________
http://www.admiralcn.com
------解决方案--------------------
你...这些错误, 太什么了吧

delegate只是一个委托, 上面我给出的例子就是一个用法啊, 那个例子我试过, 没错的说
------解决方案--------------------
你贴出来的那些错误都很容易自己fix的