ラベルとボタン「オプション」のあるフォーム。ボタンをクリックすると、2つのラジオボタン「Font1」と「Font2」、および2つのボタン「Apply」と「Cancel」で新しいフォームが開きます。ラジオボタンの1つを選択して[適用]をクリックすると、最初のフォームのラベルのフォントが変更されます。問題は、たとえばTahomaからArialまたはラベルの他のフォントフェイスにフォントを変更する方法です。
適用ボタンのオプションフォームコード。クリックすると、dialogresult.ok == trueが返され、最初のフォームのラベルのフォントが変更されます。
private void btnApply_Click(object sender, EventArgs e)
{
if (radioFont1.Checked)
{
mainForm.lblName.Font.Name = "Arial"; 'wrong attempt
}
this.DialogResult = DialogResult.OK;
}
2番目のフォームから見えるように、最初のフォームのラベルを宣言します。
public static Label lblName = new Label();
...
private void mainForm_Load(object sender, EventArgs e)
{
lblName = lblBarName;
}
Font.Name
、Font.XYZProperty
などはFont
が不変オブジェクトであるため読み取り専用であるため、新しい Font
オブジェクトを指定する必要がありますそれ:
mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size);
その他のオプションについては、Font
クラスのコンストラクターを確認してください。
作成したフォントを変更することはできません-そのため、新しいフォントを作成する必要があります。
mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size);
新しいフォントを作成する必要があります
mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size);
実際の完全なコードの答えがないことに気づいたので、これに出くわすと、簡単に変更できるフォントを変更する関数を作成しました。私はこれをテストしました
private void SetFont(Form f, string name, int size, FontStyle style)
{
Font replacementFont = new Font(name, size, style);
f.Font = replacementFont;
}
ヒント:FormをLabel、RichTextBox、TextBox、またはフォントを使用してフォントを変更するその他の相対コントロールに置き換えます。上記の関数を使用して、完全に動的にします。
/// To call the function do this.
/// e.g in the form load event etc.
public Form1()
{
InitializeComponent();
SetFont(this, "Arial", 8, FontStyle.Bold);
// This sets the whole form and
// everything below it.
// Shaun Cassidy.
}
また、すべてのバックエンドビットをコーディングする必要がないように完全なライブラリが必要な場合は、Githubから私のdllをダウンロードできます。
/// and then import the namespace
using Droitech.TextFont;
/// Then call it using:
TextFontClass fClass = new TextFontClass();
fClass.SetFont(this, "Arial", 8, FontStyle.Bold);
シンプル。