0

を使用してフォームを作成DataRepeaterし、クラスに逆シリアル化する XML ファイルを持っています。dataset次に、クラスを表すを作成しました。を にバインドdatasetしますDataRepeater。また、いくつかのラベルとテキスト ボックスを作成し、それらをデータセットの適切なデータにバインドしました。

コードは次のとおりです。

 TagLabel.DataBindings.Add("Text", ds, "Tag");
 PrecedenceLabel.DataBindings.Add("Text", ds, "Precedence"); 
 DataTypeLabel.DataBindings.Add("Text", ds, "DataType");           
 LengthLabel.DataBindings.Add("Text", ds, "Length");           
 ValueTextBox.DataBindings.Add("Text", ds, "Value");           
 MaxTextBox.DataBindings.Add("Text", ds, "Maximum");           
 MinTextBox.DataBindings.Add("Text", ds, "Minimum");           
 OverflowTextBox.DataBindings.Add("Text", ds,"OverflowBehaviour");

 bindingsource.DataSource = ds;
 dataRepeater.DataSource = bindingsource;
 dataRepeater.DataMember = "Preference";

この後、 isValueTextboxなら非表示にしたい。コードは次のとおりです。DataTypeLebel"Autoinrement"

for (int i = 0; i < dataRepeater.ItemCount; i++)            
{          
dataRepeater.CurrentItemIndex = i;

 if (((Label)dataRepeater.CurrentItem.Controls["DataTypeLabel"]).Text == "AutoIncrement")                
 {                    
 ((TextBox)dataRepeater.CurrentItem.Controls["ValueTextBox"]).Visible = false;           
 }    
 }

これを実行してプロジェクトを実行した後、この場合は XML ファイルによると、データ リピーター行 5 だけがValueTextBox非表示になっていると予想されます。ただし、フォームをスクロールすると。invisible を示す他の行がいくつか表示されVallueTextBoxます。上下にスクロールすると、非表示のテキストボックスがいたるところにあるとさらに悪化します。誰かが私が間違ったことを提案できますか?

また、仮想モードを試してコントロールを更新し、イベント ハンドラーの条件に基づいてテキスト ボックスを非表示にするdataeRepeater_itemValueNeededと、同じ問題が発生します。

4

1 に答える 1

0

If…Then などの条件ステートメントでプロパティを設定する場合は、Else 句を使用して、条件が満たされない場合の外観を指定する必要もあります。これを試して:

if (((Label)dataRepeater.CurrentItem.Controls["DataTypeLabel"]).Text    == "AutoIncrement")                  
{                      

 ((TextBox)dataRepeater.CurrentItem.Controls["ValueTextBox"]).Visible = false;             

}      

else
{
 ((TextBox)dataRepeater.CurrentItem.Controls["ValueTextBox"]).Visible = true;         
}
于 2012-10-09T13:25:09.927 に答える