none
Почему DataGridView на разных компьютерах отображается по разному? RRS feed

  • Вопрос

  • На обоих компьютерах установлена .Net Framework 4.0

    Вот, как выглядит изображение на «чужом» компьютере:

    Вот, как выглядит на моем компьютере:

    Откуда появились эти промежутки и что сделать, что бы DataGridView всегда отображалась корректно?

Ответы

  • Вы должны понять, что гарантировать одинаковый вид на двух разных компьютерах невозможно и дело тут даже не в WinForms или WPF. Такова особенность персонализации, НО в отличии от WinForms в WPF есть продвинутые возможности компоновки используя которые вы гарантируете, что на разных компьютерах приложение будет выглядеть эстетично. Так что вам либо смерится с особенностями WinForms, либо переходить на WPF.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Помечено в качестве ответа sg6336 24 мая 2012 г. 18:18
    Отвечающий

Все ответы

  • Если правильно понимаю, то на компьютерах стоит разное разрешение экрана(например, на одном 1280x720, а на другом 1600x900), вот и получается такая байда. Если приложение имеет тип WPF, то нужно для DataGrid установить свойства HorizontalAlignment и VerticalAlignment в "Stretch". Если же проект простой Windows Forms Application(судя по используемому элементу это так и есть), то тогда установи свойство Anchor равным "Top, Bottom, Left, Right"("сделать привязку к верхнему, нижнему, левому, правому краям", если переводить на русский смысл указанного значения поля) и все тут.
  • А еще можно, кинуть в нижнюю часть Panel, ее свойство Dock установить в Bottom (на нее лабелы и комбобоксы), а у DataGrid-а свойство Dock в Center (или Client) я уж  ине помню...


    Отвечающий
  • Сегодня попробовал Ваш метод. Поменял Anchor (выбрал все направления).

    Выслал программу на проверку. Когда пришлют скрин, отпишусь.

  • Если не поможет предыдущий вариант, то воспользуюсь Вашим. Т.е. добавлю элементы Panel, а в них уже вставлю DataGridView и включу Dock по центру. Попробую это завтра.

  • Проверили. Вариант с изменением Anchor ничего не дал.

    Как видно на рисунках в топике сам компонент DataGridView размер не меняет. Изменяется только высота и ширина ячейки.

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

  • Могу предположить, что разница в темах Aero и WinXP. Ну или настройках конкретной темы.
    Отвечающий
  • Как сделать, что бы отображалось одинаково?

  • В WinForms видимо никак.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    Отвечающий
  • Может еще есть идеи?
  • В WPF можно подключить dll с нужной системной темой и все будет по ней на всех компьютерах. Вам придеться принудительно, для всех элементов управления задать размеры шрифтов, сам шрифт конкретными значениями. В этом случае о системных настроек отображение зависеть не будет.

    Отвечающий
  • А в WPF есть DataGridView?

  • А в WPF есть DataGridView?

    Начиная с 4-й версии .Net Framework в WPF есть все те же элементы что и в WinForms + куча WPF'вских

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    Отвечающий
  • Нда, если ответа нет, то тему можно закрыть.

  • Я не совсем понял в чём проблема.

    Каждый пользователь задаёт системные настройки под себя. Кому-то шрифты нужны побольше, кому-то поменьше. И если при увеличенных шрифтах что-то не влезет, то автоматически появятся полосы прокрутки. При уменьшенных шрифтах будет пустое место. Для деловых приложений это норма.

    Если приложение развлекательное или игровое, то достаточно все размеры задать жёстко. В данном случае и полный размер самого DataGridView, и ширину колонок, и высоту строк. А также шрифт в ячейках. Наверняка они у вас стоят по умолчанию.

  • Я не совсем понял в чём проблема.

    Каждый пользователь задаёт системные настройки под себя. Кому-то шрифты нужны побольше, кому-то поменьше. И если при увеличенных шрифтах что-то не влезет, то автоматически появятся полосы прокрутки. При уменьшенных шрифтах будет пустое место. Для деловых приложений это норма.

    Если приложение развлекательное или игровое, то достаточно все размеры задать жёстко. В данном случае и полный размер самого DataGridView, и ширину колонок, и высоту строк. А также шрифт в ячейках. Наверняка они у вас стоят по умолчанию.


    Все настройки, что нашел, установил жестко.

    Можете привести список настроек?

  • Вы должны понять, что гарантировать одинаковый вид на двух разных компьютерах невозможно и дело тут даже не в WinForms или WPF. Такова особенность персонализации, НО в отличии от WinForms в WPF есть продвинутые возможности компоновки используя которые вы гарантируете, что на разных компьютерах приложение будет выглядеть эстетично. Так что вам либо смерится с особенностями WinForms, либо переходить на WPF.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Помечено в качестве ответа sg6336 24 мая 2012 г. 18:18
    Отвечающий
  • Вы должны понять, что гарантировать одинаковый вид на двух разных компьютерах невозможно и дело тут даже не в WinForms или WPF. Такова особенность персонализации, НО в отличии от WinForms в WPF есть продвинутые возможности компоновки используя которые вы гарантируете, что на разных компьютерах приложение будет выглядеть эстетично. Так что вам либо смерится с особенностями WinForms, либо переходить на WPF.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    Что посоветуете (что легче освоить): WPF или Silverlight?


  • Что посоветуете (что легче освоить): WPF или Silverlight?
    Сюда не подходит "что легче", так как WPF предназначен для создание приложений исполняемый в ОС (то есть привычный нам exe). Silverlight предназначен для выполнения в браузере, то есть грубо говоря это замена технологии Flash для создания сайтов.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    Отвечающий
  • Все настройки, что нашел, установил жестко.

    Можете привести список настроек?

    Попробую посоветовать.

    Размер самого DataGridView - Size.

    Ширина каждой колонки - Width.

    Высота каждой строки: RowTemplate.Height.

    Стиль ячеек. Думаю, достаточно установить DefaultCellStyle: тип шрифта, размер шрифта, padding.

    Так как, судя по скрину, заголовки строк и колонок убраны, то у них стиль ячеек задавать не обязательно.

    Ну и не забывать про свойства Anchor и Dock - они могут влиять на изменение размера компонента при ресайзинге формы.

  • У меня в цикле было:

    dGV_KeyMatrix_A.Rows[y].Height = dGV_KeyMatrix_A.Columns[y].Width = 20;

    Сейчас добавил:

    dGV_KeyMatrix_A.RowTemplate.Height = 20;
    dGV_KeyMatrix_A.DefaultCellStyle.Font = new Font("Microsoft Sans Serif", 8);
    dGV_KeyMatrix_A.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;

    Отправил на проверку. Когда придет ответ, отпишусь.

  • это не помогло
  • Судя по всему чуть выше я дал вам единственный подходящий ответ на вашу тему

    "Вы должны понять, что гарантировать одинаковый вид на двух разных компьютерах невозможно..."


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    Отвечающий