継承したフォームがあり、設定フォームとして使用しています。保存する名前を入力してもらい、入力データに応じてフォームタイトル(フォームのテキストプロパティ)を動的に変更したい。しかし、ベースフォームのタイトルを変更すると、オーバーフローが発生します。また、現在のフォーム名を保存するために、ベースフォームにFormTitleプロパティを作成します。
たとえば、私のアプリケーション名はSerenaIRであり、すべてのフォームについて以下のスタイルを表示したいと思います。
SerenaIR | ストア名| フォーム名例: SerenaIR
| スーパーマーケット| セール
FormTitleプロパティ
private string _frmTitle;
/// <summary>
/// current form title for showing on title bar.
/// </summary>
[Category("JSCustomizer"),
Description("The text that is displayed on form title bar.")]
public string FormTitle
{
get { return _frmTitle; }
set
{
try
{
_frmTitle = value;
Invalidate();
var appPreName = Properties.Settings.Default.AppNamePre + @" " + Properties.Settings.Default.AppName;
if(_frmTitle.Length < 3)
{
base.Text = appPreName;
}
else
{
base.Text = appPreName + @" | " + _frmTitle;
}
}
catch
{
return;
}
}
}
設定フォームでストア名の設定を保存し、以下のコードでタイトルを変更したい場合はベースフォームで、継承されたフォームのすべてがエラーを発生させます!
private void JSfrmBaseLoad(object sender, EventArgs e)
{
Text = Properties.Settings.Default.AppNamePre + @" " + Properties.Settings.Default.AppName;
}