1

過去に、私は次のようなデータバインディングを作成しました。

textBoxPlatypusName.DataBindings.Add(new Binding("Text", PlatypusInfo, "PlatypusName"));

...ただし、動的に作成されたコントロールでは、これは不可能です(コンパイラは、コンパイル時に「textBoxPlatypusName」を認識できません)。

これを試してみてください:

TextBox tb = (TextBox)this.Controls.Find("textBoxPlatypusName", true).First();
(TextBox)tb.DataBindings.Add(new Binding("Text", PlatypusInfo, "PlatypusName"));

...「タイプ'void'を'System.Windows.Forms.TextBox'に変換できません」および「ステートメントとして使用できるのは、代入、呼び出し、インクリメント、デクリメント、および新しいオブジェクト式のみです」と表示されます。

これを達成する方法はありますか?

4

1 に答える 1

3

型キャストを削除します。tbはすでに強く型付けされているため、必須ではありませんTextBox。とにかくここでのキャストは間違っています。

TextBox tb = (TextBox)this.Controls.Find("textBoxPlatypusName", true).First();
tb.DataBindings.Add(new Binding("Text", PlatypusInfo, "PlatypusName"));

たとえば、またtbはと入力しobjectControlそれをにキャストするTextBox必要がある場合は、2番目の括弧のセットが必要になります。

((TextBox)control).SomePropertyOfTextBox = x;

それ以外の場合、キャストは式全体に適用されます。あなたの場合、C#は、キャストされているメソッドとキャストできないAddメソッドの結果にキャストを適用したいと考えています。void

于 2012-08-15T16:56:52.550 に答える