附件:http://files.cnblogs.com/xe2011/WindowsFormsFontCombox.rar

  1. 自定义组件字体组合框
  2. 自定义组件字体组合框如何使用
  3. 自定义组件字体大小组合框
  4. 自定义组件字体大小组合框如何使用
  5. 如何设置richTextBox1选中的字体名称
  6. 如何获得richTextBox1选中的字体名称
  7. 如何设置richTextBox1选中的字体大小
  8. 如何获得richTextBox1选中的字体大小
  9. 如何在toolStrip中添加这2个控件

自定义组件的做法

1 新个新的工程,先做一个想要达到效果的样子来。

2 然后转到 InitializeComponent(); 把相关代码复制过来

3 选中工程添加一个类然后继承一个组件的类 如 class FontComboBox : ComboBox{}

4 小修改一下 基本完成了

自定义组件字体组合框类

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing; namespace System.Windows.Forms
{
class FontComboBox : ComboBox
{
public FontComboBox()
{
this.comboBox1 = this;
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Location = new System.Drawing.Point(, );
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(, );
this.comboBox1.TabIndex = ; //OwnerDrawVariable
this.comboBox1.DrawMode = DrawMode.OwnerDrawVariable;
this.comboBox1.MaxDropDownItems = ;
this.comboBox1.DropDownWidth = ; this.comboBox1.Text = "Times New Roman";
this.comboBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.comboBox1_DrawItem);
this.comboBox1.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.comboBox1_MeasureItem);
} //这么写原因
//1 comboBox1.Items初始化在Form1.Designer.cs产生了大量的代码 多出165行代码 我的系统上有165种字体
//
//private void Form1_Load(object sender, EventArgs e)
//{
// fontComboBox1.Initialize();
//}
public void Initialize()
{
this.comboBox1.Items.Clear();
foreach (FontFamily f in FontFamily.Families)
{
comboBox1.Items.Add(f.Name);
}
} private System.Windows.Forms.ComboBox comboBox1; private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
//e.DrawFocusRectangle();
string s = comboBox1.Items[e.Index].ToString(); string fontName = comboBox1.Items[e.Index].ToString();
Font font = new Font(fontName, ); e.Graphics.DrawString(s, font, Brushes.Black, e.Bounds);
} private void comboBox1_MeasureItem(object sender, MeasureItemEventArgs e)
{
e.ItemHeight = ;
}
}
}

FontComboBox.cs

初始化下就可以使用了

   private void Form1_Load(object sender, EventArgs e)
{
fontComboBox1.Initialize();
}

自定义组件字体大小组合框类

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing; namespace System.Windows.Forms
{
class FontSizeComboBox : ComboBox
{
public FontSizeComboBox()
{
this.comboBox1 = this;
//
// comboBox1
//
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Location = new System.Drawing.Point(, );
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(, );
this.comboBox1.TabIndex = ;
//this.comboBox1.Sorted = true; //OwnerDrawVariable
this.comboBox1.DrawMode = DrawMode.OwnerDrawVariable;
this.comboBox1.MaxDropDownItems = ;
this.comboBox1.DropDownWidth = ;
this.comboBox1.Text = "";
this.comboBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.comboBox1_DrawItem);
this.comboBox1.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.comboBox1_MeasureItem);
} //这么写原因有2
//1 comboBox1.Items的赋值了2次
//2 comboBox1.Items初始化在Form1.Designer.cs产生了大量的代码
//private void Form1_Load(object sender, EventArgs e)
//{
// fontSizeComboBox1.Initialize();
//}
public void Initialize()
{
this.comboBox1.Items.Clear();
this.comboBox1.Items.AddRange(new string[] {
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
""});
} private System.Windows.Forms.ComboBox comboBox1; private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
//e.DrawFocusRectangle(); string s = comboBox1.Items[e.Index].ToString();
int fontSize = Convert.ToInt32(comboBox1.Items[e.Index].ToString());
Font font = new Font("Times New Roman", fontSize, FontStyle.Bold); e.Graphics.DrawString(s, font, Brushes.Black, e.Bounds);
} private void comboBox1_MeasureItem(object sender, MeasureItemEventArgs e)
{
e.ItemHeight = Convert.ToInt32(comboBox1.Items[e.Index].ToString()) + ;
} }
}

FontSizeComboBox.cs

初始化下就可以使用了

   private void Form1_Load(object sender, EventArgs e)
{
fontSizeComboBox1.Initialize();
}

设置richTextBox1选中的字体名称

        private void fontComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
float fontSize;
try
{
fontSize = richTextBox1.SelectionFont.Size;
}
catch
{
fontSize = richTextBox1.Font.Size;
}
richTextBox1.SelectionFont = new Font(fontComboBox1.Text, fontSize);
}

获得richTextBox1选中的字体名称

 private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
if (richTextBox1.SelectionFont == null)
return; fontComboBox1.Text = richTextBox1.SelectionFont.Name.ToString();
}

如何设置richTextBox1选中的字体大小

        private void fontSizeComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string fontName;
try
{
fontName = richTextBox1.SelectionFont.Name;
}
catch
{
fontName = richTextBox1.Font.Name;
} float fontSize = Convert.ToSingle(fontSizeComboBox1.Text);
richTextBox1.SelectionFont = new Font(fontName, fontSize);
}

获得richTextBox1选中的字体大小

        private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
if (richTextBox1.SelectionFont == null)
return;
fontSizeComboBox1.Text = richTextBox1.SelectionFont.Size.ToString();
}

在toolStrip中添加这2个控件

1 选中TOOL STRIP 置于底层,选中这2个控件置于顶层

2 选中这2个控件按键盘的↑键把控件移上去

FontCombobox 和FontSizeCombobox的更多相关文章

  1. qt_文本编辑器实现_附带详细注释和源码下载

    源码下载: 链接: http://pan.baidu.com/s/1c21EVRy 密码: qub8 实现主要的功能有:新建,打开,保存,另存为,查找(查找的时候需要先将光标放到最下面位置才能查全,不 ...

  2. Qt 控件

    一.布局管理器 QHBoxLayout 水平布局 QVBoxLayout 垂直布局 QGridLayout 格点布局 QFormLayout 关联布局 QSplitter 分裂器 Spacers 间隔 ...

  3. QT_文本编辑器_源码下载

    源码下载: 链接: http://pan.baidu.com/s/1c21EVRy 密码: qub8 实现主要的功能有:新建,打开,保存,另存为,查找(查找的时候需要先将光标放到最下面位置才能查全,不 ...

  4. 【PyQt5-Qt Designer】文本框读写操作

    主要内容: 1.读.写 输入控件(Input Widgets)中的内容(str) 2.保存数据到txt文件 3.从txt文件中读内容,与输入控件中内容比较 将上述各种输入控件(Input Widget ...

  5. Winform自定义控件实例

    本文转自http://www.cnblogs.com/hahacjh/archive/2010/04/29/1724125.html 写在前面: .Net已经成为许多软件公司的选择,而.Net自定义W ...

  6. pyqt 多窗口跳转

    今天在做pyqt5的多页面跳转时遇到问题,一点击button按钮,程序会崩溃.在网上查了下,应该是当窗口A调用窗口B的时候,两个窗口不能是同一类型.我写的时候把A.B同时写成了QWidget.把窗口B ...

  7. [Qt Creator 快速入门] 第4章 布局管理

    第3章讲述了一些窗口部件,当时往界面上拖放部件时都是随意放置的,这对于学习部件的使用没有太大的影响,但是,对于一个完善的软件,布局管理却是必不可少的. 无论是想要界面中部件有一个很整齐的排列,还是想要 ...

  8. 30.QT IDE编写

    mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QTe ...

  9. 29.QT主窗口加widget

    运行效果 widget布局showwidget.h #ifndef SHOWWIDGET_H #define SHOWWIDGET_H #include <QWidget> #includ ...

随机推荐

  1. Redis总录

    设计 选择合适的数据对象来存储对象:String,List,Hash(Entity角色对象),Set,Zset(需要排序): 选择存储是全局的,还是局部的: 机制 批处理(pipeline) 事务(w ...

  2. android中LayoutInflater详解与使用

    android的LayoutInflater用来得到一个布局文件,也就是xxx.xml,而我们常用的findviewbyid是用来取得布局文件里的控件或都布局.inflater即为填充的意思,也就是说 ...

  3. 【转】.Net程序员玩转Android系列之三~快速上手

    原文:http://www.cnblogs.com/HouZhiHouJueBlogs/p/3962122.html 快速环境搭建和Hello World 第一步:JAVA SDK(JDK)的安装: ...

  4. bzoj 4031: [HEOI2015]小Z的房间 轮廓线dp

    4031: [HEOI2015]小Z的房间 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 98  Solved: 29[Submit][Status] ...

  5. 偶尔转帖:AI会议的总结(by南大周志华)

    偶尔转帖:AI会议的总结(by南大周志华) 说明: 纯属个人看法, 仅供参考. tier-1的列得较全, tier-2的不太全, tier-3的很不全. 同分的按字母序排列. 不很严谨地说, tier ...

  6. IAR编译ZStack-CC2530为可下载运行的HEX文件的正确配置

    转自IAR编译ZStack-CC2530为可下载运行的HEX文件的正确配置 IAR编译ZStack-CC2530为可下载运行的HEX文件的正确配置:        1.正确配置输出文件格式:菜单选择P ...

  7. 子查询解嵌套not in 无法展开改写

    SQL> explain plan for select * from OPS$CZTEST1.SAVJ_ATOMJOURBAK where ((list_flag = '1' and prt_ ...

  8. ChannelFactory.Endpoint 上的地址属性为空。ChannelFactory 的终结点必须指定一个有效的地址。

    主体代码如下 IServiceA proxyA; ChannelFactory<IServiceA> factoryA = new ChannelFactory<IServiceA& ...

  9. [FJSC2014]化合物

    [题目描述] 首长NOI惨跪,于是去念文化课了.现在,他面对一道化学题. 这题的来源是因为在一个奇怪的学校两个化竞党在玩一个奇怪的博弈论游戏,这个游戏很蛋疼,我相信你们也没有兴趣听. 由于这个游戏涉及 ...

  10. 系统交易策略 hylt

    最令我尴尬的事情,莫过于很多朋友来到网站,不知道我说的是什么.大多数人以为鬼仆是推销软件的.其实这里理解是错的,特别是一些软件制作与经销商,更出 于推销的目的,故意夸大产品性能,模糊交易系统与一般行情 ...