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