2016-08-17 4 views
1

フォントとフォントサイズに2つのコンボボックスがあります。私はそれをクリックすると、フォントサイズやフォントを私のrichtextboxで変更します。今私はそれが言葉のように動作するようにします。移動した行が別のフォントまたはサイズになっている場合。それを検出し、現在の行のフォントとサイズに一致するようにcomboxesを変更する必要があります。 Somoeoneはこの同じ質問をして、私にとってはうまくいかない結果を得ました。私はそれが私の答えだったが、私は何も選択しなかったときSelectionFontは、任意の違いを確認する方法を見ることができなかったという希望を差し出したwinformsを使用してC#でリッチテキストボックスの特定の行のフォントサイズを取得する方法

private void richTextBox1_SelectionChanged(object sender, EventArgs e) 
    { 
     MessageBox.Show("we got here"); // this is my added part to let me know if the code is even getting executed. It is not. 
     richTextBox1.SelectionStart = 1; 
     richTextBox1.SelectionLength = 1; 
     comboBox1.Text = richTextBox1.SelectionFont.ToString(); 
     comboBox2.Text = null; 
     comboBox2.Text = richTextBox1.SelectionFont.Size.ToString(); 

    } 

次のようでした。また、richTextBox1_SelectionChangedイベントは、上矢印または下矢印を使用してドキュメントを移動するときに呼び出されていないようです。問題はコンボボックスではなく、問題は、ドキュメント内を矢印のように、フォントとサイズがキャレット位置にあるかどうかを知る必要があるため、コンボボックスを変更して一致させるイベントを発生させることができるということです。

答えて

0

あなたはcomboBox1_SelectedIndexChangedイベントがすぐに呼び出され、結果に影響を与える可能性があります。あなたはそれを行うそうでない場合は、直接

comboBox1.SelectedIndex = comboBox1.FindStringExact(richTextBox1.SelectionFont.Name); 

、変数に一時的に新しいコンボボックスの位置の値を保存する必要があります

は、だから試してみてください。

private void richTextBox1_SelectionChanged(object sender, EventArgs e) 
{ 
    int comboBox1Index = comboBox1.FindStringExact(richTextBox1.SelectionFont.Name); 
    int comboBox2Index = comboBox2.FindStringExact(richTextBox1.SelectionFont.Size.ToString()); 

    comboBox1.SelectedIndex = comboBox1Index; 
    comboBox2.SelectedIndex = comboBox2Index; 
} 
+0

問題は選択変更イベントが呼び出されないことです。私の文書のどこにいても、私が最後に使用したフォントが表示されます。 – Larryrl

+0

それはあなたのRichTextBoxとイベント処理に関連するものです。私のテストの例では正常に動作します。 http://s000.tinyupload.com/index.php?file_id=87205811287792650699 – MarkusEgle

+0

あなたの例を見て、すべてのものを私のイベントにコピーしましたが、それでも私の解決策では動作しませんでしたcomboBox1.SelectedIndex = 0; comboBox2.SelectedIndex = 0; はSelectIndexが0になり得ないという例外をスローします – Larryrl

1

使用しているコードは、常にインデックス1の文字から選択し、長さは1です。その代わりに、選択を指定せずに次のコードを与える(これはritchTextBoxから選択されます)必要があります。

string fontName = richTextBox1.SelectionFont.Name; 
float fontsize = richTextBox1.SelectionFont.Size; 
関連する問題