Как я могу определить базовый стиль формы для всех форм в приложении Windows Forms (.Net 4)? - PullRequest
1 голос
/ 02 июля 2011

Например, я хотел бы, чтобы все мои формы имели одинаковые Icon и StartPosition.Однако мне также нужно иметь возможность определять вещи в каждой форме, как обычно, перетаскивая элементы управления и т. Д.

Возможно ли это?

Ответы [ 5 ]

2 голосов
/ 02 июля 2011

Создайте форму и установите свойства Icon и StartPosition так, как вы этого хотите. Компиляция. Это будет ваша базовая форма. Теперь используйте Project + Add New Item, узел Windows Forms и выберите шаблон элемента Inherited Form. В среде IDE вам будет предложено выбрать базовую форму.

1 голос
/ 02 июля 2011

Другим способом является создание метода расширения, в котором вы устанавливаете все параметры:

public static class FormExtentsions
{
    public static void SetDefault(this Form form)
    {
        form.Icon = new Icon("path");
        form.StartPosition = FormStartPosition.CenterScreen;
    }
}

Использование это так:

public partial class Form1 : Form
{
    public Form1()
    {
        // Put it here if you want to be able to override everything
        this.SetDefault();

        InitializeComponent();

        // Put it here if you want the defualt to override "local" settings
        this.SetDefault();

    }
}
0 голосов
/ 02 июля 2011

Да, но имейте в виду, что наследование форм несколько нестабильно с точки зрения поддержки дизайнера. Просто помните, что любые элементы управления, которые должны быть доступны для дочерних форм, должны иметь свой модификатор, измененный на Protected (Internal будет работать для форм в той же сборке, но также предоставит элемент управления ЛЮБОМУ классу в той же сборке ; Public следует избегать). Это включает в себя такие вещи, как панели или другие контейнеры, которые вы, вероятно, захотите использовать, если ваша базовая форма должна определять некоторые базовые элементы представления, поэтому вы захотите поместить дочернюю форму в определенную область.

Для этого просто создайте свою базовую форму, как и любую другую форму, затем, когда вы приступите к созданию новых форм, выберите «Унаследованная форма» вместо «Форма» и выберите базовую форму.

0 голосов
/ 02 июля 2011

Вы можете иметь статические Icon и Position, инициализировать их статическим конструктором, а затем создать конструктор, в котором вы инициализируете свойства Icon и Position экземпляра со статическим Icon и position: Fx.

class Foo : Form {
  static Bitmap sIcon     { get; private set; }
  static Point  sPosition { get; private set; }

  static Foo() {
    sIcon     = /* Load from external source */
    sPosition = new Point( x, y ); //Insert x and y
  }

  public Foo()
  : base() {
    Icon     = Foo.sIcon;
    Position = Foo.sPosition;
  } 
}

Затем используйте «Foo» в качестве базовой формы при создании форм.

Я не проверял ссылки на «Значок» и «Положение», поэтому я не знаю, существуют ли они, но вы получаетеидея:)

0 голосов
/ 02 июля 2011

Просто создайте свою собственную базу Form класс:

class FormBase : Form
{
    public FormBase()
    {
        Icon = SomeIcon;
        StartPosition = StartPosition.Whatever;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...