夕方、userInterface 部分クラスに役立つ静的クラスに次のコードがあります。コンボボックス/テキストボックスが表示されているかどうかを確認するセクションに到達するたびに:
if (cb.Visible == true)
&
if (tb.Visible == true)
コントロールがフォーム上に表示されている場合でも、常に false です。
何か案は?
ありがとう
public static bool VerifyTableLayoutControlsContainData(TableLayoutPanel tlp)
{
foreach (Control input in tlp.Controls)
{
ComboBox cb = input as ComboBox;
if(cb != null)
{
if (cb.Visible == true)
{
if (string.IsNullOrEmpty(cb.SelectedItem.ToString()))
{
return false;
}
}
}
TextBox tb = input as TextBox;
if (tb != null)
{
if (tb.Visible == true)
{
if (string.IsNullOrEmpty(tb.Text))
{
return false;
}
}
}
}
return true;
}
編集1:
UserInterface コード
private void uiBtnDataVerification_Click(object sender, EventArgs e)
{
if (VerifyingData != true)
{
AllInputsContainDataCsvFileVerificationStage = true;
//Check all inputs have something in them
InputsContainDataCsvFileVerificationStage();
if (AllInputsContainDataCsvFileVerificationStage == false)
{
UiHelper.UpdateLog("One or more inputs has not been specified.", uiTxtOperationLog);
return;
}
...
}
else
{
//Cancel permanent cancellation token.
}
}
public void InputsContainDataCsvFileVerificationStage()
{
....
if (UiHelper.VerifyTableLayoutControlsContainData(uiTableLayoutPanelColumnDataTypes)) { }
else
{
AllInputsContainDataCsvFileVerificationStage = false;
}
....
}
元のコードは UiHelper クラスにあります
Edit2:トムの提案に従って、次の変更を加えました
public userInterface()
{
InitializeComponent();
uiTableLayoutPanelColumnDataTypes.VisibleChanged += new EventHandler(notifyMe);
uiCBColumn1DataType.VisibleChanged += new EventHandler(notifyMe1);
SortedColumnNames = new List<TextBox>();
SortedDataTypes = new List<ComboBox>();
AllInputsContainDataCsvFileVerificationStage = true;
}
public void notifyMe1(object sender, EventArgs e)
{
bool temp = uiCBColumn1DataType.Visible;
MessageBox.Show("its been changed");
}
public void notifyMe(object sender, EventArgs e)
{
bool temp = uiTableLayoutPanelColumnDataTypes.Visible;
MessageBox.Show("its been changed");
}
ボタンをクリックする前に、cb1 可視性プロパティがどのように設定されているかを確認しましたが、それは True でした。元の方法でチェックしようとすると、まだ false になります。
困った!!
編集3:
2番目のタブをクリックすると、コンボボックスの可視プロパティ= falseのようです。
これがなぜなのか誰か知っていますか??