簡體   English   中英

如何訪問控件類型變量的可能屬性?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM