Как изменить или добавить изображение в заголовок панели staffdotnet.collapsiblepanel? - PullRequest
1 голос
/ 07 февраля 2012

Я работаю с WinForms и .Net 2.0, и я использую dll staffdotnet.collapsiblepanel для создания складной панели, и я хотел бы добавить заднее изображение к заголовку панели.Я уже могу изменить цвет спины в заголовке панели, но я не знаю, как это сделать с изображением.

1 Ответ

0 голосов
/ 07 февраля 2012

Я не думаю, что вы можете сделать это без внесения незначительных изменений в саму библиотеку StaffDotNot.CollapsiblePanel (найдено здесь ).

В CollapsiblePanel.Designer.cs вы увидитеследующие объявления в конце объявления partial class:

private System.Windows.Forms.Panel titlePanel;
private System.Windows.Forms.PictureBox togglingImage;
private System.Windows.Forms.ImageList collapsiblePanelImageList;
private System.Windows.Forms.Label lblPanelTitle;

Вам необходимо изменить объявление private System.Windows.Forms.Panel titlePanel; на public System.Windows.Forms.Panel titlePanel;.Это позволит вам выполнить следующий код из тестового проекта, включенного в загружаемую библиотеку:

namespace StaffDotNet.CollapsiblePanel.Test
{
    public partial class frmTest : Form
    {
        public frmTest()
        {
            InitializeComponent();
            this.collapsiblePanel1.titlePanel.BackgroundImage = Image.FromFile(@"GreenBubbles.jpg");
        }
    }
}

Используя этот пример (подставьте собственное изображение), вы получите следующий вывод:

CollapsiblePanelTest - Form1

Это, однако, не может быть оптимальным изменением, которое вы хотите сделать (подвергая весь объект titlePanel вашему классу).Вместо этого может иметь смысл добавить property к определению класса CollapsiblePanel, которое получает и устанавливает фоновое изображение (оставляя элемент titlePanel равным private)

//CollapsiblePanel.cs
#region Properties
...
/// <summary>
/// Gets or sets the the background image used in the panel title
/// </summary>
[Category("Collapsible Panel")]
[Description("Gets or sets the background image used in the panel title")]
[DisplayName("Panel Title Background Image")]
public Image PanelBackgroundImage
{
    get { return titlePanel.BackgroundImage; }
    set { titlePanel.BackgroundImage = value; }
}
#endregion

//frmTest.cs
namespace StaffDotNet.CollapsiblePanel.Test
{
    public partial class frmTest : Form
    {
        public frmTest()
        {
            InitializeComponent();

            this.collapsiblePanel1.PanelBackgroundImage = Image.FromFile(@"GreenBubbles.jpg");
        }
    }
}
...