附件: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. 一个matlab数字图像处理程序的解释

    clc; %clc是清除command window里的内容 clear all; %clear是清除workspace里的变量 close all; %close all来关闭所有已经打开的图像窗口 ...

  2. 关于entity framework

    http://www.cnblogs.com/lsxqw2004/archive/2009/05/31/1495240.html http://www.open-open.com/lib/view/o ...

  3. go网络编程示例,客户端,服务器端

    http://blog.csdn.net/wangningyu/article/details/22859245 http://blog.csdn.net/wangningyu/article/det ...

  4. 让你的短信应用迎接Android 4.4(KitKat)

    原文地址:Getting Your SMS Apps Ready for KitKat 发送和接收短信是手机最基本的功能,很多的开发者也开发了很多成功的应用来增强Android这一方面的体验.你们当中 ...

  5. android利用剪切板来实现数据的传递

    在Android开发中我们经常要遇到的一个问题就是数据在不同的Activity之间的共享.在Android开发中有很多种方法可以达到这个目地. 这里介绍一种比较常见.又常用的一种方法就是使用剪切板.我 ...

  6. 关于Json传递的日期/Date(数字)/解析

    在将DateTime类型的数据Json后传到前台展示,出现如下效果 ,在客户端如何解析呢?在jquery easyui 的字段中加一个格式化的函数调用.   { field: 'CreateTime' ...

  7. IPVS实现分析

    IPVS实现分析 IPVS实现分析 根据LVS官方网站的介绍,LVS支持三种负载均衡模式:NAT,tunnel和direct routing(DR). NAT是通用模式,所有交互数据必须通过均衡器:后 ...

  8. 利用CMake生成动态或静态链接库工程

    install解释: TARGETS版本的install命令 install(TARGETS targets... [EXPORT <export-name>] [[ARCHIVE|LIB ...

  9. Exporter - 实现默认的导入方法用于模块

    Exporter - 实现默认的导入方法用于模块 简介: In module YourModule.pm: package YourModule; require Exporter; @ISA = q ...

  10. Ext.onReady(function(){} )函数的作用域分析(1)

    Ext.onReady(function(){ var genResultDelete = function(){ alert('delete') ; } var renderResult = fun ...