動的に作成されたテキスト ボックスの配列を string[] または List<string> にバインドする必要があります。これはList<T> 問題に最も近い WinForm コントロール バインドでしたが、葉巻はありませんでした。
通常、単一のテキスト ボックスの場合、Textbox の Text プロパティをバインドします。
Engine engine = new Engine();
public frmMain()
{
InitializeComponent();
txtQuery.DataBindings.Add("Text",engine,"Query");
}
クラス プロパティへ:
public class Engine : IEngine, INotifyPropertyChanged
{
private string query;
public string Query
{
get { return query; }
set
{
query = value;
InvokePropertyChanged(new PropertyChangedEventArgs("Query"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void InvokePropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, e);
}
}
テキストボックスと文字列の配列を試してみましたが、うまくいきませんでした:
フロントエンド:
TextBox[] txtBoxArr = new TextBox[numberOfDimensions];
for (int i = 0; i < numberOfDimensions;i++)
{
string tabName = "Dataset" + (i + 1);
tabCtrlDatasets.TabPages.Add(tabName,tabName);
txtBoxArr[i] = new TextBox();
txtBoxArr[i].Name = "txtDataset" + i ;
txtBoxArr[i].DataBindings.Add("Text",engine,"Dataset");
tabCtrlDatasets.TabPages[i].Controls.Add(txtBoxArr[i]);
}
バックエンド:
private string[] dataset;
public string[] Dataset
{
get { return dataset; }
set
{
dataset = value;
InvokePropertyChanged(new PropertyChangedEventArgs("Dataset"));
}
}
それを機能させるには、配列内の項目のインデックスを知る必要があります。以前にこれを行ったことを思い出せません。テキストボックスのインデックスを特定して文字列配列の正しい項目にバインドする方法を知っている人はいますか?
今日は少し疲れていて、メモリー ブロックがあります。