0

我有两个复选框 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”变为空,并且两个复选框都未选中。所以我想制定一个这样的硬性规则,一旦这两个复选框被选中,就应该被选中,直到有人来改变它。在 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 回答