附件: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. web design tools

    https://www.google.com/webdesigner/ http://html.adobe.com/edge/inspect/ http://www.creativebloq.com/ ...

  2. 图片Base64编码 简单使用

    图片在线转换Base64,图片编码base64 http://tool.css-js.com/base64.html HTML5 + js <input type="file" ...

  3. 加密算法 - RSA

    与DES不同,RSA算法中,每个通信主体都有两个钥匙,一个公钥一个私钥. 就是有2把钥匙1.使用publicKey可以对数据进行加密2.使用Key才能对数据进行解密单方向传输用公钥加密的数据,只有私钥 ...

  4. Swift2.0新特性

    随着刚刚结束的 WWDC 2015 苹果发布了一系列更新,这其中就包括了令人振奋的 Swift 2.0. 这是对之前语言特性的一次大幅的更新,加入了很多实用和方便的元素,下面我们就一起来看看这次更新都 ...

  5. Log4j与common-logging

    Log4j与common-logging 总网上搜了些Log4j与common-logging的介绍,记录下. 一.Log4j  1.简介 Log4j是Apache的一个开放源代码项目 使用Log4j ...

  6. Python的startswith和endswith

    做文本处理的时候经常要判断一个文本有没有以一个子串开始,或者结束.Python为此提供了两个函数: S.startswith(prefix[, start[, end]]) -> bool 如果 ...

  7. AFNetworking网络请求的get和post步骤

      1.首先通过第三方:CocoaPods下载AFNetworking 1.1.先找到要查找的三方库:pod search + AFNetworking 1.2.出来一堆列表页面,选择三方库最新版本命 ...

  8. Android用户界面UI组件--AdapterView及其子类(四) GridView

    GridView常用的XML属性: android:columnWidth  设置列的宽度. android:horizontalSpacing  两列之间的间距.  android:numColum ...

  9. wps操作记录

    WPS Excel 1.点击插入---形状:画好方框,选中后右键“编辑文字”,在方框中加入你需要的文字信息 2.点击插入---形状:画出连接线,按住SHIFT拖动可以水平或垂直的直线 3.调整位置.选 ...

  10. GeoServer基础教程(一):环境搭建篇

    转自:http://imxz.me/tech/3sdev/installation-of-geoserver.html GeoServer的是一个基于Java的软件,它允许用户查看和编辑地理空间数据, ...