Почему текстовые поля в usercontrol теряют свою границу при изменении размера контейнера, а только те, которые добавляются через код - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть пользовательский контроль, который содержит текстовые поля в c# WinForms Desktop Application. Я добавляю пользовательские элементы управления с помощью кода на панель splitcontainer:

MyUserControl muc = new MyUserControl();
SplitContainer.Panel1.Controls.Add(muc);

//Setting properties of the UserControl here

muc.Anchor = AnchorStyles.Top|AnchorStyles.Left;
muc.Dock = DockStyle.Top;

При изменении размеров панелей все текстовые поля теряют свою границу. При наведении курсора мыши на текстовые поля границы снова появляются.

Если я не установлю свойство Dock пользовательского элемента управления, пользовательский элемент управления полностью исчезнет. Впоследствии, когда я наводю курсор мыши на текстовые поля, они появляются снова.

Установка никаких свойств описанного выше UserControl вообще не имеет никакого эффекта. Добавление usercontrol в контейнер после установки всех свойств не имеет никакого эффекта.

Ничего из перечисленного не происходит вообще, когда один и тот же пользовательский контроль добавляется с помощью IDE.

Почему это происходит?

1 Ответ

0 голосов
/ 09 апреля 2020

Я использовал приведенный ниже код, полученный от Google, чтобы решить проблему прозрачности, которая у меня была. Это решило проблему прозрачности, но и другие вопросы заставили меня сделать редизайн, который сделал проблему прозрачности спорным. Этот остаток кода вызывал мои проблемы:

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams parms = base.CreateParams;
            parms.ExStyle |= 0x20;
            return parms;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...