close

 

Visual Studio只單獨改變文字大小或字體。

知識+問題 網址:
http://tw.knowledge.yahoo.com/question/question?qid=1510060304300 

 

關於網友 常嚐試 的提問:

VS寫程式碼時
改變文字屬性
txt.font=new font(''細明體'',12,fontstyle.bold)
此一形式限制
就沒辦法只改變單其中一種
請問該怎麼解決呢

需求是
例如有6個按鈕
分別是字體12、字體14、字體16、字型斜體、字型粗體、字體標準
我要怎麼讓textbox內的文字(原本狀態是字體12、字型斜體)
在我選擇字體16時,字型不會改變,而保留原來的斜體
在我進一步改變字體為粗體的時候,字型也不會變動還是一樣16?

因為
new font(''細明體'',12,fontstyle.bold)
這個形式讓我很困擾
一個按鈕只有一種樣子
我不知道如何去寫才會互相獨立不影響

 

------------------------------ 我的回答分格線 ------------------------------

程式碼:

using System;
using System.Drawing;
using System.Windows.Forms;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private FontStyle fs;
        private FontFamily fm;
        private Font f;
        private float size;


        public Form1()
        {
            InitializeComponent();
        }


        //12px
        private void button1_Click(object sender, EventArgs e)
        {
            fs = textBox1.Font.Style;
            fm = new FontFamily(textBox1.Font.Name);
            f = new Font(fm, 12, fs);
            textBox1.Font = f;
        }


        //14px
        private void button2_Click(object sender, EventArgs e)
        {
            fs = textBox1.Font.Style;
            fm = new FontFamily(textBox1.Font.Name);
            f = new Font(fm, 14, fs);
            textBox1.Font = f;         
        }


        //16px
        private void button3_Click(object sender, EventArgs e)
        {
            fs = textBox1.Font.Style;
            fm = new FontFamily(textBox1.Font.Name);
            f = new Font(fm, 16, fs);
            textBox1.Font = f;         
        }


        //italic
        private void button4_Click(object sender, EventArgs e)
        {
            size = textBox1.Font.Size;
            fm = new FontFamily(textBox1.Font.Name);
            f = new Font(fm, size, FontStyle.Italic);
            textBox1.Font = f;         
        }


        //bold
        private void button5_Click(object sender, EventArgs e)
        {
            size = textBox1.Font.Size;
            fm = new FontFamily(textBox1.Font.Name);
            f = new Font(fm, size, FontStyle.Bold);
            textBox1.Font = f;              
        }


        //regular
        private void button6_Click(object sender, EventArgs e)
        {
            size = textBox1.Font.Size;
            fm = new FontFamily(textBox1.Font.Name);
            f = new Font(fm, size, FontStyle.Regular);
            textBox1.Font = f;             
        }
    }
}

 

字體大小及字體形式各取一例說明:
在這個例子中,我們要實作這個Font,需要要填入三個引數

Font f = new Font(字型, 大小, 樣式);

參見 MSDN Font 建構函式 (FontFamily, Single, FontStyle)
http://msdn.microsoft.com/zh-tw/library/ms141985(v=VS.100).aspx 


而我們希望達到的功能為:
當欲變更字型大小時,字型及樣式不變動;
當欲變更字型樣式時,字型及大小不變動。 

 

所以當欲變更 大小 時,先把原本的 字型樣式 儲存起來,
再將新的 大小 及原本的 字型樣式 拿來初始化新的Font。 

//12px
private void button1_Click(object sender, EventArgs e)
{
    fs = textBox1.Font.Style;        //將原本的樣式存入 fs
    fm = new FontFamily(textBox1.Font.Name);        //將原本的字型存入 fm
    f = new Font(fm, 12, fs);        //以fs, fm 以及新的大小'12',初始化新的Font
    textBox1.Font = f;        //將textBox1.Font以剛剛新的Font取代
}

 

欲變更 樣式 時,先把原本的 字型大小 儲存起來,
再將新的 樣式 及原本的 字型大小 拿來初始化新的Font。 

//italic
private void button4_Click(object sender, EventArgs e)
{
    size = textBox1.Font.Size;        //將原本的大小存入size
    fm = new FontFamily(textBox1.Font.Name);        //將原本的字型存入 fm
    f = new Font(fm, size, FontStyle.Italic);        //以size, fm 以及新的樣式FontStyle.Italic,初始化新的Font
    textBox1.Font = f;        //將textBox1.Font以剛剛新的Font取代
}

 

程式範例及執行檔下載點:
http://docs.google.com/uc?id=0B0mAuRCHd82fM2ViN2M4ZDctYzE5Mi00NzI4LThkNmMtZGVjYWY4ZmRjM2Iz&export=download&hl=zh_TW


arrow
arrow
    全站熱搜

    eeStuff 發表在 痞客邦 留言(1) 人氣()