Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 11054
∙ повысить рейтинг »
LfiN
Статус: Специалист
Рейтинг: 711
∙ повысить рейтинг »
PsySex
Статус: Профессионал
Рейтинг: 418
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Microsoft .NET : C#

Номер выпуска:265
Дата выхода:23.11.2015, 15:51
Администратор рассылки:Alexey G. Gladenyuk (Руководитель)
Подписчиков / экспертов:8 / 6
Вопросов / ответов:3 / 6

Консультация # 181476: Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Дано 2 вещественных массива Х[1..50] и Y[1..K]. Элементы каждого из массивов X и Y упорядочены по неу- быванию. Объединить элементы этих двух массивов в один массив Z так, чтобы они оказались упорядоченными по не- ...


Консультация # 171760: Добрый вечер Уважаемые эксперты. Программирую на Visual C# 2008 приложение Windows form appilication. Как сделать так чтобы при нажатии на кнопку, размещеную в форме выскакивало окно, в которое можно было бы поместить еще пару полей куда вписывались бы значения и эти значения возвращались в главную форму. Или же наример просто, чтобы не значения...
Консультация # 88186: Здравствуйте! Вопрос такой. Есть неоткомпилированный контрол, подключеный к проекту. Контрол размещается на форме. (Так как контрол неоткомпилированный - инициализацию его нужно задавать вручную) На форме есть контейнер типа Panel. Вопрос в том, как растянуть мой контрол на панель? this.MyControl.Dock = System.Windows.For...

Консультация # 181476:

Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:
Дано 2 вещественных массива Х[1..50] и Y[1..K].
Элементы каждого из массивов X и Y упорядочены по неу-
быванию. Объединить элементы этих двух массивов в один
массив Z так, чтобы они оказались упорядоченными по не-
убыванию.
Желательно с блок-схемой,решение студенческого уровня,с пояснениями,через console application

Дата отправки: 20.12.2010, 13:07
Вопрос задал: Benqq
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Челноков Виктор Альбертович:

Здравствуйте, Benqq!

Код :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {//Создаем 2 массива
            int[] x = {4,45,69,78,88 };
            int[] y = { 2,8,23,56,64};
            // объеденяем массивы в один массив z -  x.Concat(y) и сортируем по неубыванию - OrderBy (s=>s)
            IEnumerable <int> z = x.Concat(y).OrderBy (s=>s);

            foreach (int i in z)
            {
               // Печатаем результирующий массив
                Console.WriteLine(i.ToString());
            }

            Console.ReadLine();
        }
    }
}

Консультировал: Челноков Виктор Альбертович
Дата отправки: 20.12.2010, 13:46
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует PsySex (Профессионал):

Здравствуйте, Benqq!

Код :
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //объявляем переменную К
            int K = 20;
            //по условию задачи
            int[] X = new int[50];
            int[] Y = new int[K];
            //объявляем массив Z, размер массива складывается из размеров массивов X и Y
            int[] Z=new int[X.Length+Y.Length];
            //создаем генератор случайных чисел
            Random randomize=new Random();

            //подготавливаем массивы согласно условию===========
            //массив Х 
            for (int i = 0; i < X.Length; ++i)
            {
                //заполняем случайными числами до 100000(например)
                X[i] = randomize.Next(100000);
            }
            //упорядочиваем массив по неубыванию
            Array.Sort(X);
            //массив Y
            for (int i = 0; i < Y.Length; ++i)
            {
                //заполняем случайными числами до 100000(например)
                Y[i] = randomize.Next(100000);
            }
            //упорядочиваем массив по неубыванию
            Array.Sort(Y);
            //===================================================
            //копируем массив Х в массив Z начиная с 0 индекса(для массива Z)
            X.CopyTo(Z, 0);
            //копируем массив Y в массив Z, индекс массива Z равен размеру ранее копированного массива X
            Y.CopyTo(Z, X.Length);
            //упорядочиваем массив по неубыванию, как требовало задание
            Array.Sort(Z);
            //выводим на экран получившийся массив Z
            foreach (int ArrValue in Z)
            {
                Console.WriteLine(ArrValue);
            }
            //ждем нажатие любой клавиши, чтоб закрыть консольное окно и завершить приложение
            Console.ReadKey();
        }
    }
}

Консультировал: PsySex (Профессионал)
Дата отправки: 20.12.2010, 13:58
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 171760:

Добрый вечер Уважаемые эксперты. Программирую на Visual C# 2008 приложение Windows form appilication.
Как сделать так чтобы при нажатии на кнопку, размещеную в форме выскакивало окно, в которое можно было бы поместить еще пару полей куда вписывались бы значения и эти значения возвращались в главную форму. Или же наример просто, чтобы не значения а можно было бы выбрать в этом окне, например, фон главной формы и т д. Как организовать выбор знаю. Не знаю как организовать создание этого нового окна, и сохранение данных с него. И чтобы при нажатии одной из кнопок на нем оно сохраняло все и закрывалось. А приложение продолжало работать. Заранее спасибо.

Дата отправки: 30.08.2009, 22:52
Вопрос задал: Dimon4ik
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Дегтярев Антон Александрович:

Здравствуйте, Dimon4ik.
По поводу 1ого вопроса "Как сделать так чтобы при нажатии на кнопку, размещеную в форме выскакивало окно", не понятно в чём проблема:
Создаёте ещё одну форму:
1. В Solution Explorer нажмите правой кнопкой мыши на проекте
2. В ниспадающем меню выберите Add
3. В открывшемся меню выберите Windows Form.
Накидайте компонентов как вам нужно.
Далее в Первой форме опишите событие при нажатии нужной кнопки.

По поводу 2ого вопроса "чтобы при нажатии одной из кнопок на нем оно сохраняло все и закрывалось"
Я вижу 2 способа:
1. Создать структуру на главной форме приложения и наполнять её из 2ой формы
2. 2ое создать структуру во 2ой форме наполнять её по мере заполнения данных во 2ой форме, а потом передавать данные из структуры в нужные места 1ой формы.

В приложении приведу оба способа: Пример со строкой.

Вот вроде и всё.

Приложение:

Консультировал: Дегтярев Антон Александрович
Дата отправки: 31.08.2009, 12:55

5
Спасибо. Так и ничего не получилось у меня. Но я еще позанимаюсь. Вдруг прояснится.
-----
Дата оценки: 31.08.2009, 23:43

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Micren:

Здравствуйте, Dimon4ik.
Есть различные способы передачи данных между объектами. В примере Вы увидите привязку данных и передачу через общедоступное свойство.

MainForm:

Код :
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();

            backgroundForm = new BackgroundForm();
            backgroundForm.Owner = this;
            backgroundForm.Ok_Click += new EventHandler(backgroundForm_Ok_Click);
        }

        void backgroundForm_Ok_Click(object sender, EventArgs e)
        {
            BackColor = backgroundForm.ColorChoice.ColorRGB;
        }

        readonly BackgroundForm backgroundForm;

        private void backgroundButton_Click(object sender, EventArgs e)
        {
            backgroundForm.ColorChoice = BackColor;
            backgroundForm.ShowDialog();
        }
    }


BackgroundForm:
Код :
    public partial class BackgroundForm : Form
    {
        public BackgroundForm()
        {
            InitializeComponent();
            SetBindings();
        }

        private void SetBindings()
        {
            // Делаем привязку
            redBar.DataBindings.Add("Value", ColorChoice, "Red", false, DataSourceUpdateMode.OnPropertyChanged);
            greenBar.DataBindings.Add("Value", ColorChoice, "Green", false, DataSourceUpdateMode.OnPropertyChanged);
            blueBar.DataBindings.Add("Value", ColorChoice, "Blue", false, DataSourceUpdateMode.OnPropertyChanged);
        }

        ColorData savedColor;
        ColorData colorChoice = new ColorData();
        public ColorData ColorChoice
        {
            get { return colorChoice; }
            set
            {
                colorChoice.Red = value.Red;
                colorChoice.Green = value.Green;
                colorChoice.Blue = value.Blue;
            }
        }

        private void okButton_Click(object sender, EventArgs e)
        {
            if (Ok_Click != null)
            {
                Ok_Click(this, new EventArgs());
            }
        }

        public event EventHandler Ok_Click;

        private void cancelButton_Click(object sender, EventArgs e)
        {
            ColorChoice = savedColor;
        }

        private void BackgroundForm_Shown(object sender, EventArgs e)
        {
            savedColor = (ColorData)colorChoice.Clone();
        }
    }


ColorData:
Код :
    public class ColorData : INotifyPropertyChanged, ICloneable
    {
        byte red;
        public byte Red
        {
            get { return red; }
            set
            {
                if (red != value)
                {
                    red = value;
                    OnPropertyChanged("Red");
                }
            }
        }

        byte green;
        public byte Green
        {
            get { return green; }
            set
            {
                if (green != value)
                {
                    green = value;
                    OnPropertyChanged("Green");
                }
            }
        }

        byte blue;
        public byte Blue
        {
            get { return blue; }
            set
            {
                if (blue != value)
                {
                    blue = value;
                    OnPropertyChanged("Blue");
                }
            }
        }

        public Color ColorRGB
        {
            get
            {
                return Color.FromArgb(Red, Green, Blue);
            }
        }

        public static implicit operator ColorData(Color color)
        {
            return new ColorData(color);
        }

        public ColorData(byte red, byte green, byte blue)
        {
            Red = red;
            Green = green;
            Blue = blue;
        }

        public ColorData(Color color)
            : this(color.R, color.G, color.B)
        { }

        public ColorData()
        { }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion

        #region ICloneable Members

        public object Clone()
        {
            ColorData result = new ColorData(Red, Green, Blue);
            result.PropertyChanged = (PropertyChangedEventHandler)PropertyChanged.Clone();
            return result;
        }

        #endregion
    }


Проект можно скачать здесь:
http://rapidshare.com/files/273799028/171760.zip

Консультировал: Micren
Дата отправки: 31.08.2009, 14:54

5
Спасибо большое за решение задачи, за написание примеров, за оптимизацию моей программы и за файлы проектов.
-----
Дата оценки: 31.08.2009, 23:38

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Evgenijm:

Здравствуйте, Dimon4ik.

1 Когда очень много контролов со схожими функциями, старайтесь писать для них общий обработчик. Это помогает сконцентрироваться и отпадает необходимость вносить изменения сразу в 9 функций. Для первого из них создается обработчик двойным щелчком, меняется имя на более общее, а потом у каждого контрола выбирается эта функция в выпадающем списке.
2 Давайте говорящие имена. При нумерации, она тоже должна вносить ясность, а не запутывать. Я пронумеровал контролы, чтобы они соответствовали координатам на поле.
3 Я убрал панели под лейблами - так проще код. Правда, тени так отбрасываются в другую сторону.

Поле теперь - массив 3х3. Для сброса игры вызывайте функцию ReInit. Проверку после хода реализуйте сами. С таким полем ее проще сделать.

Я добавил диалог и кнопку для демонстрации техники. Внутри диалога используется еще стандартный ColorDialog. Как видите, ничего безумно сложного. Просто открытое поле или свойство. Для тек стового свойства я еще применил одностороннюю привязку к данным. Не забудьте потом убрать диалог, кнопку и ее обработчик из проекта.

В моем коде все равно есть несколько сомнительных моментов, но для маленького проекта это не страшно.

http://rapidshare.com/files/274698746/GAME.rar.html

Консультировал: Evgenijm
Дата отправки: 02.09.2009, 17:58
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 88186:

Здравствуйте! Вопрос такой.
Есть неоткомпилированный контрол, подключеный к проекту. Контрол размещается на форме. (Так как контрол неоткомпилированный - инициализацию его нужно задавать вручную)

На форме есть контейнер типа Panel.
Вопрос в том, как растянуть мой контрол на панель?

this.MyControl.Dock = System.Windows.Forms.DockStyle.Fill; Растягивает контрол на всю форму, какие бы координаты и размеры не имели MyControl и Panel

Дата отправки: 23.05.2007, 06:27
Вопрос задал: Svanshe
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Jan:

Здравствуйте, Svanshe!
Нужно установить принадлежность вашего контрола
Panel.Controls.Add(MyControl) - по-моему так. (так это выглядет в VB.Net для C#, мне кажется, больших отличий не будет)

Консультировал: Jan
Дата отправки: 23.05.2007, 12:29
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное