我们在做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) 我调试输出 这个时候 我在拖一个textbox..我在后台强制下 textBox2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 这样输入就变得正常了.是雅黑的效果..但是第一个文本框虽然集成了baseForm但是还是宋体 这个时候 我又输出 Console.WriteLine(textBox1.Font); 居然得到的是一样的东西 [Font: Name=微软雅黑, Size=9, Units=3, GdiCharSet=134, GdiVerticalFont=False] 这就奇怪了…所以一般来说 只要把form的字体设置成雅黑,窗体里面的控件不都变成雅黑的吗? 如果这个答案是肯定的.那么上面的例子表明textbox不是其中. 如果是否定的.那么除了textbox其他还都是雅黑.. |
|
override System.Drawing.Font Font
应该是这里出了问题吧 |
|
50分 |
为什么不在设计器里指定属性,而非要写override?
|
61分 |
你的 构造函数中的 InitializeComponent(); 方法 哪里去了??
|
把设计什么属性之类的,全都放在 构造函数里,试试。 |
|
override 之后窗体所有的控件的字体 都显示是微软雅黑..证明这个override 是成功的.
当窗体运行之后 你看到的所有的字体 也都是雅黑的.. 就是文本框这特立….懂了么? |
|
每个窗体的InitializeComponent()我都不需要修改…默认的就行(宋体) 但是我会继承一个BaseForm 这个BaseForm里面改字体的… 现在采用这样的办法可以了. public class BaseForm : System.Windows.Forms.Form { public BaseForm() { this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 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; } } 不过 针对字体除了文本框不可以 其他的属性都可以…搞定了就行,具体为啥我也不去关心了.. |