0

以下に示すコードでチェックされる 2 つのチェック ボックス m_chkRegex と m_chkCaseSensitive があります。

public PropertyFilter InFilter
  {
     get{ return m_inFilter; }
     set{ m_inFilter = value; }
  }
  private PropertyFilter m_inFilter = null;
        m_operatorComboBox.SelectedIndex = 0;
     if( Property != null )
     {
        m_propertyLabel.Text = Property.DisplayName;
        if( InFilter != null )
        {
           m_operatorComboBox.SelectedItem = InFilter.GetOperatorAsString();
           m_valueTextBox.Text = InFilter.GetValueAsString();
           m_chkRegex.Checked = ( InFilter.FilterType == PropertyFilter.enumFilterType.regularExpr );
           m_chkCaseSensitive.Checked = InFilter.CaseSensitive;
        }
     }

何らかの理由で "InFilter" が null になり、両方のチェック ボックスがオフになります。だから私は、これらの2つのチェックボックスがチェックされたら、誰かが来て変更するまでチェックしなければならないというような厳しいルールを置くことを望んでいます. ASP.NET では、チェック ボックスをオンにする IsPostBack プロパティがあると聞きましたが、winform にそれを実現するメカニズムはありますか。

アップデート

今私は理解しました、以下はコード変数pFiltがnullになる問題ですが、何をすべきかわかりません

private void LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
      {
         // Get appropriate information.
         PropertyFilter pFilt = (PropertyFilter)e.Link.LinkData;
4

1 に答える 1

0

まず第一に、あなたは正しいことをテストしていません。コードは次のようになります (これで目的が達成できれば)。

private PropertyFilter m_inFilter = null;
if( m_inFilter != null )
{
     //CheckBox logic.
}

私はあなたがこれがCheckBox構文であることを知っていると確信しています:CheckBox.Checked(bool);
したがって、ここでの論理は(ブレークポイントを使用して)理由を確認することです

InFilter.FilterType == PropertyFilter.enumFilterType.regularExpr  

//And

InFilter.CaseSensitive

どちらも返品可能falseです。(間違ったものでテストしていないことを意味します。InFilter代わりにm_inFilter)。

于 2012-11-29T18:18:31.423 に答える