如何访问Control类型变量的可能属性?

时间:2015-06-11 23:08:48

标签: c#

我有一个Control类型变量,它将被设置为组合框或文本框。我无法从控制变量访问选择开始属性。这必须是因为该数据类型是没有该属性的控件的父级。如何解决这个问题以访问选择开始属性?

代码:

.wrapper {
    width:100%;
    height:100%;
    border:1px solid;
}
.photo {
    height: 100%; 
    background:blue; 
    float:right;
    vertical-align:top;
    text-align:center;
    padding:2px;
}
.photo_dimensions {
    max-height: 149px;
    max-width: 149px;
}
.details {
    width:auto;
    height:auto;
    background:red;
    overflow:hidden;
    vertical-align:top;
    text-align:left;
}

2 个答案:

答案 0 :(得分:2)

您是正确的,这是一个数据类型问题。您需要将object类型转换为textbox才能访问选择开始属性。

if(FocusedTextComboBox is TextBox)
   SelectionStartNumber = (FocusedTextComboBox as TextBox).SelectionStart

答案 1 :(得分:1)

扩展user3529814的答案,将局部变量声明为TextBox并转换控件,以便在整个块中使用它:

        if (FocusedTextComboBox is TextBox)
        {
            TextBox tb = (TextBox)FocusedTextComboBox;

            if (SearchTextBox.SelectionStart == 0 && SearchTextBox.Text != "")
            {
                switch (shift)
                {
                    case true:
                        tb.Text += upperCaseChar;
                        break;
                    case false:
                        tb.Text += lowerCaseChar;
                        break;
                }
            }
            else
            {
                int SelectionStartNumber = tb.SelectionStart;

                switch (shift)
                {
                    case true:
                        tb.Text = tb.Text.Insert(tb.SelectionStart, upperCaseChar);
                        break;
                    case false:
                        tb.Text = tb.Text.Insert(tb.SelectionStart, lowerCaseChar);
                        break;
                }
                tb.SelectionStart = SelectionStartNumber + 1;
            }
        }