C # TableLayoutPanel.BackColor продолжает сбрасывать - PullRequest
0 голосов
/ 05 октября 2011

При использовании элемента управления System.Windows.Forms.TableLayoutPanel в форме окна он также устанавливает цвет фона: 216, 216, 216 , и даже если мы изменим цвет к чему-то другому, цвет всегда, кажется, возвращается к 216, 216, 216 .

Он делает это во время выполнения и даже во время разработки. Во время разработки вы можете изменить цвет, и он будет повторно изменен, но если вы переключитесь с дизайнера форм и вернетесь к нему, он вернется к 216, 216, 216 .

Это известная проблема или как мы можем избежать этой проблемы?

Примечание : Мы сделали это, используя только пустой проект, макет одной таблицы, используя .NET Framework 4 (не клиентскую среду).

Мы используем

  • Microsoft Visual Studio 2010
  • Версия 10.0.30319.1 RTMRel
  • Microsoft .NET Framework версия 4.0.30319 RTMRel
  • Установленная версия: Ultimate

C # Подробности

  • Microsoft Visual C # 2010 01019-532-2002102-70826
  • Microsoft Visual C # 2010

Ответы [ 4 ]

1 голос
/ 12 апреля 2012

У меня была такая же проблема в одном из наших проектов.

Мы решили эту проблему, создав подкласс класса MetroForm и добавив функцию в событие OnLoad, чтобы пройти через все дочерние элементы управления типа Panel и изменить свойство BackColor.

Пример:

public class CustomMetroForm : MetroForm
{
    public CustomMetroForm()
    {
        this.Load += this.OnLoad;
    }

    public virtual void OnLoad(object sender, EventArgs eventArgs)
    {
        foreach (var descendant in this.Descendants<Panel>().Where(x => x.BackColor == Color.FromArgb(255, 216, 216, 216)))
        {
            descendant.BackColor = Color.White;
        }
    }
}

public static class ControlExtensions
{
    public static IEnumerable<T> Descendants<T>(this Control control) where T : class 
    { 
        foreach (Control child in control.Controls) 
        { 
            var childOfT = child as T; 

            if (childOfT != null) 
            { 
                yield return childOfT; 
            }

            if (child.HasChildren) 
            { 
                foreach (var descendant in Descendants<T>(child)) 
                { 
                    yield return descendant; 
                } 
            } 
        } 
    }
}

Будем надеяться, что они скоро исправят эту проблему (она не была исправлена ​​в v10.4.0.2)

0 голосов
/ 11 февраля 2016

Наблюдаемое поведение - это дизайн, стилизация изменяет окружающие цвета дочерних элементов управления, так что можно добиться однородного внешнего вида. Если некоторые элементы управления должны быть освобождены от этого, вот описание того, как это делается: http://www.devcomponents.com/kb2/?p=1160#ambient

0 голосов
/ 21 октября 2011

Проблема вызвана компонентами Metro внутри пакета DevComponents. При добавлении макета таблицы к чему-либо в форме с поддержкой Metro цвет макета таблицы сбрасывается обратно к тому, что хочет менеджер стилей, независимо от того, как вы его установили.

Открыв проблему с разработчиком, чтобы посмотреть, можно ли ее исправить, они по состоянию на 21.10.2011 сообщают, что ищут способы преодоления этой проблемы.

0 голосов
/ 06 октября 2011

У меня нет такой проблемы с tablelayoutpanel.Но для краткого (и, возможно, грязного) способа, которым вы могли бы следовать, измените значения цвета в загрузке формы.Это будет работать наверняка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...