首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

为什么用C#编纂richtextbox字体样式和字体大小随下拉框中comboBox的值变化不起作用

2013-12-02 
为什么用C#编写richtextbox字体样式和字体大小随下拉框中comboBox的值变化不起作用如图所示,我要实现的功

为什么用C#编写richtextbox字体样式和字体大小随下拉框中comboBox的值变化不起作用
如图所示,我要实现的功能是当选择下拉菜单comboBox中字体类型和字体大小的时候,richtextbox选中的文本会变为相应的字体为什么用C#编纂richtextbox字体样式和字体大小随下拉框中comboBox的值变化不起作用。可是我的代码根本没反应(注:comboBox1的名字为fontCB,comboBox2的名字为sizeCB,RichTextBox的名字为rtb):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (FontFamily font in FontFamily.Families)
                this.fontCB.Items.Add(font.Name);//设置fontCB下拉菜单内容
            this.fontCB.SelectedItem = "宋体";//设置fontCB显示内容
            foreach (string name in FontSizeName)
                this.sizeCB.Items.Add(name);//设置sizeCB下拉菜单内容
            this.sizeCB.SelectedItem = "10";//设置sizeCb显示内容

        }
         public string[] FontSizeName =
            {
                "8","9","10","12","14","16","18","20","22","24","26","28","36","48","72"
            };
        //定义字号数组
         public float[] FontSize =
            {
                8,9,10,12,14,16,18,20,22,24,26,28,36,48,72
            };
         private string fontName;
         private int fontSize;
         private void fontCB_SelectedIndexChanged(object sender, EventArgs e)
         {
             try
             {
                 this.rtb.SelectionFont = new Font(this.fontCB.Text, this.rtb.SelectionFont.Size, this.rtb.SelectionFont.Style);
             }
             catch (Exception ex)//捕获并显示异常内容
             {
                 MessageBox.Show("出现异常:" + ex, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }

         }
         private void sizeCB_SelectedIndexChanged(object sender, EventArgs e)
         {
             try
             {
                 this.rtb.SelectionFont = new Font(this.rtb.SelectionFont.FontFamily, FontSize[this.sizeCB.SelectedIndex], this.rtb.SelectionFont.Style);
             }
             catch (Exception ex)
             {
                 MessageBox.Show("出现异常:" + ex, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
  
         }
         //private void fontSB_Click(object sender, EventArgs e)
         //{
         //    try
         //    {


         //        if (fontDialog1.ShowDialog() == DialogResult.OK)
         //            rtb.Font = fontDialog1.Font;
         //    }
         //    catch (Exception)
         //    {
         //    }
         //}

         //private void rtb_TextChanged(object sender, EventArgs e)
         //{
         //    FontConverter ft = new FontConverter();
         //    String ziti = fontCB.SelectedText.Trim();//字体
         //    String daxiao = sizeCB.SelectedText.Trim();//大小
         //    String font = ziti + "," + daxiao;
         //    rtb.Font = (Font)ft.ConvertFromString(font);
         //}

    }
}
C# richtextbox comboBox
[解决办法]
你改变想要改变的字体前,要先选中啊。。
想自动全选的话,用this.rtb.SelectAll()吧;
[解决办法]
先设字体大小 ,再选字体,加 rtb.SelectAll();


  private void sizeCB_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                rtb.SelectAll();
                this.rtb.SelectionFont = new System.Drawing.Font(this.rtb.SelectionFont.FontFamily, FontSize[this.sizeCB.SelectedIndex], this.rtb.SelectionFont.Style);
             
            }
            catch (Exception ex)
            {
                MessageBox.Show("出现异常:" + ex, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
  
        }

热点排行