ReadOnly の TextBox.ForeColor の設定が反映されない現象の対策
TextBox の文字列を編集させたくない場合は TextBox.ReadOnly = true とする。
TextBox のフォントの色は TextBox.ForeColor で設定できる。
TextBox.ReadOnly = true かつ TextBox.ForeColor = 色
の場合、それだけでは色が反映されない。
結論から述べると、TextBox.BackColor も同時に設定してやる必要がある。
背景色を設定する必要がなくても。
普通はまず気づかないと思うが、 TextBox.BackColor を設定していないと、 TextBox.ForeColor はデフォルト値でオーバーライドされてしまうようだ。
参考: [.NET]ReadOnly=TrueのTextBox.ForeColorの設定が反映されない場合の対処法 - 僕らはみんな歪ている
NG
textBox1.ReadOnly = true;
textBox1.ForeColor = Color.Red;
OK
textBox1.ReadOnly = true;
textBox1.ForeColor = Color.Red;
textBox1.BackColor = SystemColors.Control;