誰かが表示されるのは、SqlConnectionStringBuilderインスタンスにテキストボックスをバインドしようとしたときにエラーが発生する理由を教えてください。WindowsフォームをSqlConnectionStringBuilderにバインドする
「データソースのプロパティまたは列データソースにバインドすることはできません\ rを\名前nParameter:データメンバー」それは、それはそれを見つけるために反映したときに、プロパティを見つけることができませんマネージャを結合のように思える
。
get/set操作を転送する「何もしない」ラッパーを書くと、期待どおりに動作します。
私はSqlConnectionStringBuilderオブジェクトを反映しましたが、プロパティに直接バインドできないと思うようなものは見られませんでした。私がコメントしたバージョンへのデータソースの割り当てを変更した場合
はここ
public partial class frmMain : Form {
private BindingSource bindingSource = new BindingSource();
public frmMain() {
InitializeComponent();
//bindingSource.DataSource = typeof(SqlConnectionStringBuilderWrapper);
bindingSource.DataSource = typeof(SqlConnectionStringBuilder);
tbDataSource.DataBindings.Add("Text", bindingSource, "DataSource");
initializeConnectionStrings();
}
private void initializeConnectionStrings() {
SqlConnectionStringBuilder defaultBuilder = null;
cmbConnectionStrings.DataSource = SqlConnectionStrings.ConnectionBuilders(out defaultBuilder);
//bindingSource.DataSource = new SqlConnectionStringBuilderWrapper(defaultBuilder);
bindingSource.DataSource = defaultBuilder;
cmbConnectionStrings.SelectedItem = defaultBuilder;
}
}
public class SqlConnectionStringBuilderWrapper : INotifyPropertyChanged {private SqlConnectionStringBuilder builder = null;
public SqlConnectionStringBuilderWrapper(SqlConnectionStringBuilder builder) { this.builder = builder; }
public SqlConnectionStringBuilder Builder { get { return builder; } set {} }
public string DataSource {
get { return builder.DataSource; }
set {
if (builder.DataSource != value) {
builder.DataSource = value;
OnPropertyChanged("DataSource");
}
}
}
...
}
...私が使用しているコードのモックアップです。できます。ラッパーがなぜ必要なのか分かりません。
ありがとうございます!
ラッパーには何がありますか? –
[BindingSource.DataSourceプロパティ]の[備考]セクション(https://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.datasource(v = vs.110))を確認することをお勧めします。 aspx#備考)。 – TnTinMn
あなたが言及したセクションを見直しました。私はSqlConnectionStringBuilderクラスの構成が有効なデータソースとしてそれを不適格とするところを見ませんでした。 –