stevenandler Ответов: 2

Управления datagridview не изменяется при развернутом окне формы


У меня есть приложение C# Windows Forms, разработанное с помощью MS Visual Studio 2010 Ultimate. Все работает нормально, за исключением того, что я не могу получить DataGridView, который составляет большую часть пространства на форме, чтобы максимизировать, когда пользователь решает максимизировать форму, чтобы заполнить весь экран.

У меня есть свойство или какой-то другой метод кодирования, который я могу применить, чтобы заставить DataGridView расширяться вместе с формой?


Спасибо.

joshrduncan2012

Якорная собственность?

Sergey Alexandrovich Kryukov

Это возможно, но в большинстве случаев такой способ явно уступает Доку в сочетании с прокладкой. Я объяснил это в своем ответе, пожалуйста, смотрите.
—СА

2 Ответов

Рейтинг:
15

Sergey Alexandrovich Kryukov

Вам нужно воспользоваться этой собственностью Dock вашего контроля, с другой тогда ценностью System.Windows.Forms.DockStyle.None (что является значением по умолчанию):
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dock.aspx[^],
http://msdn.microsoft.com/en-us/library/system.windows.forms.dockstyle.aspx[^].

В этом случае размер элемента управления будет изменен автоматически.

Один комментарий к предложению joshrduncan2012 использовать Anchor: они часто полезны, но в большинстве случаев предпочитают стыковочный подход. Некоторые элементы управления имеют тенденцию мерцать во время операции изменения размера, если они закреплены на якоре. Кроме того, это скорее ручная работа или кодирование: вам нужно будет заботиться о положении и размере одновременно, для симметрии и плохо для обслуживания. При стыковочном подходе это не проблема: используйте его с Padding:
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.padding.aspx[^],
http://msdn.microsoft.com/en-us/library/system.windows.forms.padding.aspx[^].

—СА


Espen Harlinn

5 ЕД!

Sergey Alexandrovich Kryukov

Спасибо, Эспен.
—СА

stevenandler

Я поставил док на заправку. Единственная проблема, которая у меня сейчас есть, - это некоторые метки и текстовые поля в верхней части формы, и теперь datagridview накладывается на эти элементы. Не могли бы вы сказать мне, какое еще свойство я могу установить, которое защитит верхнюю часть формы от покрытия ее datgridview?

Sergey Alexandrovich Kryukov

You just screw up something, it happens. Here is the idea: don't put anything in the form, except some panel. Dock absolutely everything, and the "real" controls should be placed in some panel, one or another in a hierarchy of docked panels padding them. Sparingly, use the Splitter, but only when it makes sense. It takes little experience, but very soon you will clearly see how to do it. I personally often use the Designer to put main menu, status bars and those panels, and add everything else in code. For some complex layout, it's good to colorize the panels, to clearly see how things are moving on resize; later you can remove these colors... Just a little designer's secret...
—СА

Рейтинг:
0

stevenandler

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