私はWindowsフォームプロジェクトに取り組んでいます。を継承するクラスが1つ必要な場合System.Windows.Forms.Form
、名前を付けてクラスをFormBase.cs
継承しSystem.Windows.Forms.Form
ます。しかし、ソリューション エクスプローラーでFormBase.cs
は、Windows フォームのようなビューを取得しました。ソリューション エクスプローラーからファイルを開こうとすると、デザイン モードで開きます。シンプルなのでclass
、デザインビューではなくコードビューで開く必要があると思います。なぜそれが起こるのですか?FormBase.cs
常にコード ビューで開き、ソリューション エクスプローラーでクラス ビューを取り戻し
たい場合はどうすればよいですか? FormBase.cs
次のようになります。
public class FormBase : System.Windows.Forms.Form
{
public virtual Dictionary<string, string> NonSaveableReasons()
{
Dictionary<string, string> _nonSavebleReasons = new Dictionary<string, string>();
//MaskedTextBox.MaskedTextBox and MaskedTextBox.MyCombo are Custom Components
//which are of type TextBox and ComboBox respectively
//having 2 more properties name as "IsMandatory" and "LabelName"
foreach (MaskedTextBox.MaskedTextBox maskTextBox in this.Controls.OfType<MaskedTextBox.MaskedTextBox>())
{
if (maskTextBox.IsMandatory && string.IsNullOrEmpty(maskTextBox.Text) && !_nonSavebleReasons.ContainsKey(maskTextBox.Name))
_nonSavebleReasons.Add(maskTextBox.Name, maskTextBox.LabelName + " is mandatory.");
}
foreach (MaskedTextBox.MyCombo myCombo in this.Controls.OfType<MaskedTextBox.MyCombo>())
{
if (myCombo.IsMandatory && string.IsNullOrEmpty(myCombo.Text) && !_nonSavebleReasons.ContainsKey(myCombo.Name))
{
if (!_nonSavebleReasons.ContainsKey(myCombo.Name))
_nonSavebleReasons.Add(myCombo.Name, myCombo.LabelName + " is mandatory.");
}
}
return _nonSavebleReasons;
}
public string GetValidationStringMsg(Dictionary<string, string> nonSavableResons)
{
return nonSavableResons != null ? String.Join(Environment.NewLine, nonSavableResons.Select(a => a.Value).ToArray()) : string.Empty;
}
}