关于winform窗体继承有关问题
关于winform窗体继承问题.
我们在做CS开发的时候 新建的窗体 都是宋体..有边框以及最大化最小化之类的东西..每次改的话 很费劲,,
所以 我写了一个cs继承form重新里面的部分内容..这样以后在新建窗体直接继承这个cs就不用改了.
因为我不知道用哪个事件..所以随意找了一个OnCreateControl.发现还可以,能控制新窗体里面的部分东西..于是我就用了
至于字体 这样也可以 或者this.font=new System.Drawing.Font也是可以..
那么问题来了..
新建一个form:baseform 你发现 你拖一些控件的字体 都是雅黑的...这听起来很正常.看起来也很正常.
不过文本框这地方就不一样了..输入的字体还是宋体的..但是我从属性来看 他的确是雅黑(因为继承了baseForm)
我调试输出
Console.WriteLine(textBox2.Font);
示的也是
[Font: Name=微软雅黑, Size=9, Units=3, GdiCharSet=134, GdiVerticalFont=False]
也正常,不过看起来一定不是雅黑 就是宋体..
这个时候 我在拖一个textbox..我在后台强制下
这样输入就变得正常了.是雅黑的效果..但是第一个文本框虽然集成了baseForm但是还是宋体
这个时候 我又输出
Console.WriteLine(textBox1.Font);
Console.WriteLine(textBox2.Font);
居然得到的是一样的东西
[Font: Name=微软雅黑, Size=9, Units=3, GdiCharSet=134, GdiVerticalFont=False]
[Font: Name=微软雅黑, Size=9, Units=3, GdiCharSet=134, GdiVerticalFont=False]
这就奇怪了...所以一般来说 只要把form的字体设置成雅黑,窗体里面的控件不都变成雅黑的吗?
如果这个答案是肯定的.那么上面的例子表明textbox不是其中.
如果是否定的.那么除了textbox其他还都是雅黑..
------解决思路----------------------
为什么不在设计器里指定属性,而非要写override?
------解决思路----------------------
你的 构造函数中的 InitializeComponent(); 方法 哪里去了??
我们在做CS开发的时候 新建的窗体 都是宋体..有边框以及最大化最小化之类的东西..每次改的话 很费劲,,
所以 我写了一个cs继承form重新里面的部分内容..这样以后在新建窗体直接继承这个cs就不用改了.
public class BaseForm : Form
{
public BaseForm()
{
}
protected override void OnCreateControl()
{
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.ShowIcon = false;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.ControlBox = false;
base.OnCreateControl();
}
public override System.Drawing.Font Font
{
get
{
return new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
}
set
{
base.Font = value;
}
}
}
因为我不知道用哪个事件..所以随意找了一个OnCreateControl.发现还可以,能控制新窗体里面的部分东西..于是我就用了
至于字体 这样也可以 或者this.font=new System.Drawing.Font也是可以..
那么问题来了..
新建一个form:baseform 你发现 你拖一些控件的字体 都是雅黑的...这听起来很正常.看起来也很正常.
不过文本框这地方就不一样了..输入的字体还是宋体的..但是我从属性来看 他的确是雅黑(因为继承了baseForm)
我调试输出
Console.WriteLine(textBox2.Font);
示的也是
[Font: Name=微软雅黑, Size=9, Units=3, GdiCharSet=134, GdiVerticalFont=False]
也正常,不过看起来一定不是雅黑 就是宋体..
这个时候 我在拖一个textbox..我在后台强制下
textBox2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
这样输入就变得正常了.是雅黑的效果..但是第一个文本框虽然集成了baseForm但是还是宋体
这个时候 我又输出
Console.WriteLine(textBox1.Font);
Console.WriteLine(textBox2.Font);
居然得到的是一样的东西
[Font: Name=微软雅黑, Size=9, Units=3, GdiCharSet=134, GdiVerticalFont=False]
[Font: Name=微软雅黑, Size=9, Units=3, GdiCharSet=134, GdiVerticalFont=False]
这就奇怪了...所以一般来说 只要把form的字体设置成雅黑,窗体里面的控件不都变成雅黑的吗?
如果这个答案是肯定的.那么上面的例子表明textbox不是其中.
如果是否定的.那么除了textbox其他还都是雅黑..
------解决思路----------------------
为什么不在设计器里指定属性,而非要写override?
------解决思路----------------------
你的 构造函数中的 InitializeComponent(); 方法 哪里去了??