私は1つのフォームといくつかのクラスを持つwindowsフォームアプリケーションを持っています。シングルトン:nullを返すフォームインスタンス
Form1インスタンスからいくつかのtextBoxesの値を取得し、その値を抽出します。これを達成する
私の最初の方法は、フォームを取得するためにApplication.OpenForms[]
配列を使用していたが、私は私が直接アクセスすることができ、他のことは不可能だろうとのForm1クラスにシングルトンを使用すると、より効率的であることに気づきましたインスタンス。
1.コントロールクラスからコントロールを取得するにはForm1の
シングルトンがのForm1内部クラス を設定class Controls
{
//Request Form1 instance
private static Form1 form = Form1.GetInstance();
//Sets global values for easy access with getters and null setters
//--Variable 'form' is still null hence I get the NullReferenceException
private TextBox employer = form.Controls["textBoxEmployerName"] as TextBox;
private TextBox role = form.Controls["textBoxRole"] as TextBox;
private TextBox company = form.Controls["textBoxCompanyName"] as TextBox;
private TextBox website = form.Controls["textBoxWebsite"] as TextBox;
private TextBox refNumber = form.Controls["textBoxRefNumber"] as TextBox;
private TextBox reason = form.Controls["textBoxReason"] as TextBox;
private TextBox dateListed = form.Controls["textBoxDateListed"] as TextBox;
private Label charLimit = form.Controls["labelCharsRemaining"] as Label;
public TextBox Employer { get { return employer; } }
public TextBox Role { get { return role; } }
public TextBox Company { get { return company; } }
public TextBox Website { get { return website; } }
public TextBox RefNumber { get { return refNumber; } }
public TextBox Reason { get { return reason; } }
public TextBox DateListed { get { return dateListed; } }
public Label CharLimit { get { return charLimit; } }
}
}
2.:ここ
は、私はそれを設定している方法です
public partial class Form1 : Form
{
private static Form1 theInstance;
public Form1()
{
InitializeComponent();
}
//Return instance of Form1
//--This is obviously returning null for some reason
public static Form1 GetInstance()
{
if (theInstance == null)
theInstance = new Form1();
return theInstance;
}
おそらく私はクラスからシングルトンを取得しようとすると "NullReferenceException"を受け取っていますForm1。
次のように私が使用している以下の方法がある:
- をWindows.OpenForms [ "をForm1の"]を用いてコントロール[ " - somecontrol--"]
- Windows.ActiveForm に
- を使用します。クラスをForm1
これらの方法の全てにシングルトンデザインパターンを使用するには、nullを返していると私はそれがnullを返すする理由を考えるカント。
助けが必要です。
ありがとう
'form'はnullですか? 'as'演算子は、キャストが機能しない場合はnullを返し、' form.Controls ["nonExistentasdf323"] 'も' null'を返します。 – Quantic