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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как выводить матрицу? 
:(
    Опции темы
4YBAK
Дата 10.2.2006, 01:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А как лучше выводить элементы матрицы (тип double) в виндовом приложении?
Может, как-нить в датагрид зафигарить?
PM MAIL   Вверх
mr.DUDA
Дата 10.2.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Легко:

Код
    /// <summary>
    /// Строка матрицы длиной 3 элемента
    /// </summary>
    public class Matrix3Row
    {
        public double x, y, z;

        public double X
        {
            get {return x;}
            set {x = value;}
        }
        public double Y
        {
            get {return y;}
            set {y = value;}
        }
        public double Z
        {
            get {return z;}
            set {z = value;}
        }
        
        public Matrix3Row(double x, double y, double z)
        {
            this.x = x;
            this.y = y;
            this.z = z;
        }
    }

    public class Form1 : System.Windows.Forms.Form
    {
        protected override void OnLoad(EventArgs e)
        {
            Matrix3Row[] matrix = new Matrix3Row[]
            {
                new Matrix3Row(1, 2, 3),
                new Matrix3Row(4, 5, 6),
                new Matrix3Row(7, 8, 9)
            };

            this.dataGrid1.SetDataBinding(matrix, "");
            
            // сейчас колонки идут в произвольном порядке, поэтому
            // мы заново добавим в грид колонки в порядке "X", "Y", "Z"
            DataGridTableStyle style = new DataGridTableStyle();
            style.MappingName= "Matrix3Row[]";
            DataGridTextBoxColumn xColumn = new DataGridTextBoxColumn();
            DataGridTextBoxColumn yColumn = new DataGridTextBoxColumn();
            DataGridTextBoxColumn zColumn = new DataGridTextBoxColumn();
            xColumn.MappingName= "X";
            xColumn.HeaderText= "X";
            yColumn.MappingName= "Y";
            yColumn.HeaderText= "Y";
            zColumn.MappingName= "Z";
            zColumn.HeaderText= "Z";
            style.GridColumnStyles.Add(xColumn);
            style.GridColumnStyles.Add(yColumn);
            style.GridColumnStyles.Add(zColumn);
            dataGrid1.TableStyles.Clear();
            dataGrid1.TableStyles.Add(style);

            base.OnLoad (e);
        }




--------------------
user posted image
PM MAIL WWW   Вверх
4YBAK
Дата 10.2.2006, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Почему-то данный код не работает с матрицей типа double[,]
Компилится нормально, но не работает...
Код



private void button1_Click(object sender, System.EventArgs e)

{
            double[,] matrix = new double[3,3]
            {
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9},
            };

            this.dataGrid1.SetDataBinding(matrix, "");
}


Кстати, что значит второй параметр в методе SetDataBinding? И чем это метод отличается от свойства DataSource?

з.ы. Как оформлять вывод столбцов в нужном порядке я понял, спасибо!
Теперь надо заставить всё это работать с матрицей double[,]
Возможности делать класс Matrix3Row нет ни малейшей... Матрица double[,] уже готова....

Это сообщение отредактировал(а) 4YBAK - 10.2.2006, 20:57
PM MAIL   Вверх
mr.DUDA
Дата 11.2.2006, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата(4YBAK @ 10.2.2006, 19:55 Найти цитируемый пост)
Кстати, что значит второй параметр в методе SetDataBinding? И чем это метод отличается от свойства DataSource?

Ничем не отличается. Разве что, наполняет грид колонками.
Второй параметр указывает DataMember для DataSource.

Цитата(4YBAK @ 10.2.2006, 19:55 Найти цитируемый пост)
Теперь надо заставить всё это работать с матрицей double[,]
Возможности делать класс Matrix3Row нет ни малейшей... Матрица double[,] уже готова....

Проблема в том, что каждый элемент из DataSource должен быть объектом со свойствами, одно свойство - одна колонка. С массивами, боюсь не получится. Можно поюзать DevExpress-овский грид, там всё более демократично.


--------------------
user posted image
PM MAIL WWW   Вверх
4YBAK
Дата 11.2.2006, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(mr.DUDA @ 11.2.2006, 10:01 Найти цитируемый пост)
Можно поюзать DevExpress-овский грид, там всё более демократично.

А где его взять?
А то не прёт выводить матрицу вот так примитивно:


Код

private void button1_Click(object sender, System.EventArgs e)
        {
            double[,] matrix = new double[3,3]
            {
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9},
            };
            string s="";

            for(int i=0;i<3;i++)
            {
                for(int j=0;j<3;j++) s+=matrix[i,j].ToString()+ "     ";
                s+="\n";
            }        
                
            MessageBox.Show(s,"matrix");

}



PM MAIL   Вверх
mr.DUDA
Дата 11.2.2006, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Ну, если так всё обстоит чтобы "просто вывести матрицу", можно и ListBox поюзать, или даже обычный TextBox с Multiline = true


--------------------
user posted image
PM MAIL WWW   Вверх
4YBAK
Дата 12.2.2006, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Да это понятно, что можно....
Но хоца как-нить покруче вывести... Покрасивее для юзера...
Может, есть компонент, в котором просто пишешь grid[i,j]=matrix[i,j] ?
Или еще лучше grid.datasource=matrix
К тому же мне понадобится определенные строки и столбцы матрицы выделить цветом....

Это сообщение отредактировал(а) 4YBAK - 12.2.2006, 18:40
PM MAIL   Вверх
mr.DUDA
Дата 12.2.2006, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Юзай DevExpress.XtraGrid, и всё у тебя получится.


--------------------
user posted image
PM MAIL WWW   Вверх
4YBAK
Дата 13.2.2006, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(mr.DUDA @ 12.2.2006, 22:24 Найти цитируемый пост)
Юзай DevExpress.XtraGrid, и всё у тебя получится.


Где его найти?

PM MAIL   Вверх
mr.DUDA
Дата 13.2.2006, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата(4YBAK @ 13.2.2006, 16:06 Найти цитируемый пост)
Где его найти?

Был бы он бесплатный - я б тебе скинул не только ссылочку, но и саму дллку smile


--------------------
user posted image
PM MAIL WWW   Вверх
4YBAK
Дата 13.2.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(mr.DUDA @ 13.2.2006, 17:27 Найти цитируемый пост)
Был бы он бесплатный - я б тебе скинул не только ссылочку, но и саму дллку


Не жмотись smile Скинь ддлку smile

PM MAIL   Вверх
mr.DUDA
Дата 13.2.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Вот бери, только здесь без Design-Time.

Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  DevXpress.zip 813,89 Kb


--------------------
user posted image
PM MAIL WWW   Вверх
4YBAK
Дата 14.2.2006, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Пасиба!
Скачал, добавил в references проекта....
А че дальше делать - не пойму...
Напиши пример использования, плиз.
Конкретно интересует вывод матрицы double A[,] и покраска любого столбца и любой строки, скажем, в желтый цвет.
PM MAIL   Вверх
mr.DUDA
Дата 14.2.2006, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Ну добавь на тулбокс компонент DevExpress.XtraGrid.GridControl из дллки DevExpress.XtraGrid, дальше всё будет понятно


--------------------
user posted image
PM MAIL WWW   Вверх
Exception
Дата 14.2.2006, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



[offtop]
Он впринципе удобнее и настраиваемее, чем DataGridView, я правильно понял smile ?
[/offtop]
Добавлено @ 19:21
По поводу "просто DataSource = matrix" - в последнем посте темы "Vingrad .NET Framework" я привел класс для такого (хотя не знаю, сработает ли). Тебе нужно будет написать
Код
myGrid.DataSource = DataSetSerializer<double[,]>.Serialize(matrix).Tables[0];

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

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


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

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


 




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


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

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