Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MVS 2008 - проблема 
V
    Опции темы
okaton
Дата 24.10.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Почему в 2008 студии не получается совершить такое действие:

Цитата

 Дважды щелкаем по файлу Settings.settings в Solution Explorer и добавляем настройку с некоторым именем (в данном примере с именем «ColsOrder») в список. В колонке «Type» настройки нужно указать «System.Int32[]» ...


в 2005 получается, как же это сделать в 2008    smile 
PM MAIL   Вверх
diadiavova
Дата 24.10.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



В VS2008 в свойствах проекта есть вкладка Settins все настройки выполняются там.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
okaton
Дата 24.10.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Немного переформулирую вопрос.
В установках не получается задать тип «System.Int32[]».  Обратите внимание на массив. Его там конечно нет, но если в 2005 в строке выбора "вручную" задать «System.Int32[]», она его подключит.  А вот в 2008 ругается и не не подключает. Что делать?

Это сообщение отредактировал(а) okaton - 24.10.2008, 12:11
PM MAIL   Вверх
diadiavova
Дата 24.10.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Целочисленный массив можно преобразовать в строку, разделить числа запятыми. А студия правда ругается - наверно больше не поддерживается такая возможность.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
okaton
Дата 24.10.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



То есть таку штуку сделать не получится?

Q. Хотелось бы сохранять расположение колонок при выходе из приложения или закрытии окна и восстанавливать его при открытии. По умолчанию grid этого не делает. Можно это как-то поправить?

A. Можно, причем вариантов масса. Один из:

Дважды щелкаем по файлу Settings.settings в Solution Explorer и добавляем настройку с некоторым именем (в данном примере с именем «ColsOrder») в список. В колонке «Type» настройки нужно указать «System.Int32[]» (в выпадающем списке типов выбрать пункт «Browse...» и в появившемся диалоге вписать указанный тип). В колонке «Scope» указать – «User».

Далее пишем две функции сохранения и восстановления порядка колонок (вместо DefNamespace нужно подставить имя пространства имен используемого по умолчанию в данном проекте):

Код

public static void LoadColumnsOrder(DataGridView grid, string settingsEntry)
{
  int[] displayIndexes = (int[])
    DefNamespace.Properties.Settings.Default[settingsEntry];

  if (displayIndexes == null || displayIndexes.Length != grid.Columns.Count)
    return;

  for (int i = 0; i < grid.Columns.Count; i++)
    grid.Columns[i].DisplayIndex = displayIndexes[i];
}


Код

public static void SaveColumnsOrder(DataGridView grid, string settingsEntry)
{
  int[] displayIndexes = new int[grid.Columns.Count];

  for (int i = 0; i < grid.Columns.Count; i++)
    displayIndexes[i] = grid.Columns[i].DisplayIndex;

  DefNamespace.Properties.Settings.Default[settingsEntry] = displayIndexes;
}


Вызываем первую при загрузке формы:

Код

private void Form1_Load(object sender, EventArgs e)
{
  // "ColsOrder" – это имя настройки в файле Settings.settings
  LoadColumnsOrder(dataGridView1, "ColsOrder");
}


А вторую – при закрытии:

Код

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
  SaveColumnsOrder(dataGridView1, "ColsOrder");
  WindowsApplication1.Properties.Settings.Default.Save();
}



В самом низу статьи
PM MAIL   Вверх
diadiavova
Дата 24.10.2008, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Я бы сосредоточился на фразе
Цитата(okaton @  24.10.2008,  12:38 Найти цитируемый пост)
Можно, причем вариантов масса

Не обязательно всё хранить в массиве. А статья написана в 2006 году, под студию 2005. А для того, чтобы сохранить порядок колонок без массива точно обойтись можно. Выписать индексы колонок в сторку в нужном порядке через запятую и сохранить как строку. При извлечении разбить строку на строковый массив по запятым и преобразовать строки в числа. Получится малепусенькая процедурка.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
MasterOfCode
Дата 24.10.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 2
Всего: 27



okaton, обрати внимание на советы diadiavova. Храни string параметр,
такой строчкой воспользуйся:
Код

_ColsOrders = "1,2,3,4,5,6"
string[] colsOrders = _ColsOrders.Split(',');
//colsOrders будет равняться массиву из 6 символов



--------------------
user posted image
PM ICQ   Вверх
diadiavova
Дата 24.10.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



В принципе можно использовать код из статьи, написать что-то в этом роде 
Код

string IntArrayToText(int[] colOrder)
{
    string s = "";
    foreach(int i in colOrder)
    {
        s += i.ToString() + ",";
    }
    //здесь убираем лишнюю запятую.
    //Можно наверное и поэлегантнее сделать, но для простоты и так сойдёт
    return s.Substring( 0, s.Length - 1);
}

int[] TextToIntArray(string colOrder)
{
    string[] sAr = colOrder.Split(",");
    int[] rv = new int[s.Lengnh];
    for(int i = 0; i < sAr.Length; i++)
    {
        rv[i] = (int)sAr[i];
    }
    return rv;
}

(Если в коде есть ошибки - извиняюсь я на другом языке пишу, но думаю идея понятна)
Дальше перед сохранением массива передаёмего функции IntArrayToText и сохраням уже строку. А при загрузке данных передаём преобразовываем строку в массив при помощи функции TextToIntArray, а  дальше как в статье.

Это сообщение отредактировал(а) diadiavova - 24.10.2008, 14:52


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
okaton
Дата 24.10.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



diadiavovaMasterOfCode,  спасибо за помощь!

Результата я добился smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.