![](/img/trans.png)
[英]Is it possible to access properties of a subclass if the object's reference variable is a superclass type?
[英]How do I access a Control type variable's possible properties?
我有一個控件類型變量,它將被設置為組合框或文本框。我無法從控件變量訪問選擇開始屬性。 這必須是因為該數據類型是不具有該屬性的控件的父級。 如何解決此問題以訪問選擇開始屬性?
編碼:
private void createText(string lowerCaseChar, string upperCaseChar)
{
Control FocusedTextComboBox;
switch (lastTextComboBoxFocused)
{
case 54:
FocusedTextComboBox = SearchTextBox;
break;
case 4:
FocusedTextComboBox = VendorComboBox;
break;
case 6:
FocusedTextComboBox = VendorComboBox;
break;
case 5:
FocusedTextComboBox = DeptComboBox;
break;
}
if (SearchTextBox.SelectionStart == 0 && SearchTextBox.Text != "")
{
switch (shift)
{
case true:
FocusedTextComboBox.Text += upperCaseChar;
break;
case false:
FocusedTextComboBox.Text += lowerCaseChar;
break;
}
}
else
{
int SelectionStartNumber = FocusedTextComboBox.SelectionStart;
switch (shift)
{
case true:
FocusedTextComboBox.Text = FocusedTextComboBox.Text.Insert(FocusedTextComboBox.SelectionStart, upperCaseChar);
break;
case false:
FocusedTextComboBox.Text = FocusedTextComboBox.Text.Insert(FocusedTextComboBox.SelectionStart, lowerCaseChar);
break;
}
FocusedTextComboBox.SelectionStart = SelectionStartNumber + 1;
}
FocusedTextComboBox.Focus();
}
您是正確的,這是一個數據類型問題。 您需要將object
類型轉換為textbox
,才能訪問選擇開始屬性。
if(FocusedTextComboBox is TextBox)
SelectionStartNumber = (FocusedTextComboBox as TextBox).SelectionStart
擴展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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.