如何使复选框始终检查,直到有人更改

时间:2012-11-29 18:00:18

标签: c# .net winforms visual-studio-2010 checkbox

我有两个复选框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;

1 个答案:

答案 0 :(得分: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)。