2012-11-11 12 views
33

Windows Formsアプリケーションのステータスストリップを更新しようとしていますが、何も表示されません。ここに私のコードは次のとおりです。WindowsフォームでStatusStripを更新する方法

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    lines = Regex.Split(textBox1.Text.Trim(), "\r\n"); 
    lineCount = lines.Count(); 
    statusStrip1.Text = "Lines: " + lineCount; 
    statusStrip1.Refresh(); 
} 

答えて

45

enter image description here

あなたはStatusStripToolStripStatusLabelを追加する必要があります。

代わりに、ラベルのテキストを設定します(ステータスラベルに更新がないため、statusstrip.Refreshを実行する必要があります)。 StatusStripTextプロパティがStatusStripから来

は(順番にControlを継承)ToolStripを継承しますが、ToolStripsの性質による視覚的効果がありません。ちょっと混乱するかもしれません。

例:

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    //... 
    lines = Regex.Split(textBox1.Text.Trim(), "\r\n"); 
    lineCount = lines.Count(); 

    //this label is added in visual editor using the default name 
    ToolStripStatusLabel1.Text = string.Format("Lines: {0}", lineCount); 
    StatusStrip1.Refresh(); 
} 
+0

*** StatusStrip ***に 'マルチスレッド 'が必要** InvokeRequired **または_TPL Tasks_、* IMHO *が必要です。 – Kiquenet

0

私はStatusStrip制御を参照してください同様の問題に遭遇しますが明らかに親コントロール内ToolStripStatusLabel項目なし。 ToolStripStatusLabelアイテムの最初のテキスト(「準備完了」など)も表示されませんでした。ラベル項目のSpringは、trueTextAlignTopLeftに設定されました。

問題はNeverにStatusStripコントロールのLayoutStyleFlowへとToolStripStatusLabel項目のOverflowを設定することで解決しました。明らかに、親コントロールのレイアウトスタイルがTableに設定されていると、ラベルアイテムは非表示になりました。

関連する問題