有人可以告訴我爲什麼當我嘗試將文本框綁定到SqlConnectionStringBuilder實例時,它不起作用,我收到錯誤消息。將Windows窗體綁定到SqlConnectionStringBuilder
「不能綁定到數據源的屬性或列的DataSource \ r \ n參數名稱:數據成員」
好像綁定管理器時,它反映了發現它無法找到屬性。
如果我寫一個只做轉發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#Remarks)爲允許的類型。 – TnTinMn
我已閱讀您提到的部分。我沒有看到SqlConnectionStringBuilder類的組合在什麼地方將它定義爲有效的數據源。 –