Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2012, 13:59   #1
Ангел без крыльев
Пользователь
 
Регистрация: 30.04.2011
Сообщений: 10
По умолчанию Работа с 2-мя формами

Есть 2-е формы

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows;

namespace Лаба4
{
    public partial class Form1 : Form
    {
        public List<double> xl = new List<double>();
        public List<double> sxl = new List<double>();
        public List<double> yxl = new List<double>();
        public double xz;
        
        public Form1()
        {
            InitializeComponent();
            buttonProverka.Enabled = false;
        }

        private void xnBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar))
            {
                if (e.KeyChar != '.' || xnBox.Text.IndexOf(".") != -1)
                {
                    e.Handled = true;
                }
            }
        }

        private void xkBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar))
            {
                if (e.KeyChar != '.' || xkBox.Text.IndexOf(".") != -1)
                {
                    e.Handled = true;
                }
            }
        }
       
        private void sgBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar))
            {
                if (e.KeyChar != '.' || sgBox.Text.IndexOf(".") != -1)
                {
                    e.Handled = true;
                }
            }
        }

        private void tnBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar))
            {
                if (e.KeyChar != '.' || tnBox.Text.IndexOf(".") != -1)
                {
                    e.Handled = true;
                }
            }
            
        }

        private bool proverka(string str)
        {
            bool stod = double.TryParse(str, out xz);
            return stod;
        }
        
        public void ButtonRun_Click(object sender, EventArgs e)
        {

            if (proverka(xnBox.Text))
            {
                if (Convert.ToDouble(xnBox.Text) < 0.1 || Convert.ToDouble(xnBox.Text) > 0.3) xnBox.Text = "0,1";
            }
            else xnBox.Text = "0,1";

            if (proverka(xkBox.Text))
            {
                if (Convert.ToDouble(xkBox.Text) < 0.7 || Convert.ToDouble(xkBox.Text) > 0.9) xkBox.Text = "0,7";
            }
            else xkBox.Text = "0,7";

            if (proverka(sgBox.Text))
            {
                if (Convert.ToDouble(sgBox.Text) < 0.1 || Convert.ToDouble(sgBox.Text) > 0.2) sgBox.Text = "0,1";
            }
            else sgBox.Text = "0,1";

            if (proverka(tnBox.Text))
            {
                if (Convert.ToDouble(tnBox.Text) < 5 || Convert.ToDouble(tnBox.Text) > 20) tnBox.Text = "5";
            }
            else tnBox.Text = "5";

            double xn = Convert.ToDouble(xnBox.Text);
            double xk = Convert.ToDouble(xkBox.Text);
            double sg = Convert.ToDouble(sgBox.Text);
            double tn = Convert.ToDouble(tnBox.Text);
            double v, s = 0, y;
            double x = xn;
            do
            {
                for (int k = 1; k < tn; k++)
                {
                    v = Math.Pow(x, k) * Math.Pow((Math.Sin(Math.PI / 4)),k);
                    s += v ;
                }
                y = (x * (Math.Sin(Math.PI/4)))/(1 - 2 * x * Math.Cos(Math.PI/4) + Math.Pow (x,2));

                ListBoxResult.Items.Add("при х = " + Convert.ToString(x) +
                                 " S(x) = " + Convert.ToString(Math.Round(s,5)) +
                                 " Y(x) = " + Convert.ToString(Math.Round(y,5)));
                xl.Add(x);
                sxl.Add(Math.Round(s,5));
                yxl.Add(Math.Round(y,5));
                s = 0;
                x += sg;
            }
            while (x <= xk);

            buttonProverka.Enabled = true;
        }

        public void ButtonClear_Click(object sender, EventArgs e)
        {
            ListBoxResult.Items.Clear();
            buttonProverka.Enabled = false;
        }
Ангел без крыльев вне форума Ответить с цитированием
Старый 10.04.2012, 14:00   #2
Ангел без крыльев
Пользователь
 
Регистрация: 30.04.2011
Сообщений: 10
По умолчанию

Код:
private void xnBox_Enter(object sender, EventArgs e)
        {
            MessageBox.Show("Введите число в пределе от 0,1 до 0,3");
        }

        private void xkBox_Enter(object sender, EventArgs e)
        { 
            MessageBox.Show("Введите число в пределе от 0,7 до 0,9");
        }

        private void sgBox_Enter(object sender, EventArgs e)
        {
            MessageBox.Show("Введите число в пределе от 0,1 до 0,2");
        }

        private void tnBox_Enter(object sender, EventArgs e)
        {
            MessageBox.Show("Введите число в пределе от 5 до 20");
        }

        public void buttonProverka_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.Owner = this;
            form2.ShowDialog();
        }

        private void Exit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void ListBoxResult_DrawItem(object sender, DrawItemEventArgs e)
        {
            Form2 form2 = this.Owner as Form2;
            string[] str = ListBoxResult.Items[e.Index].ToString().Split();
            if (Convert.ToDouble(str[9]) > (double)form2.numericUpDown1.Value)
                e.Graphics.DrawString(ListBoxResult.Items[e.Index].ToString(),
  new Font(FontFamily.GenericSansSerif, 8, FontStyle.Bold), Brushes.Black, new RectangleF(e.Bounds.X,
            e.Bounds.Y, e.Bounds.Width, e.Bounds.Height));
            else
                e.Graphics.DrawString(ListBoxResult.Items[e.Index].ToString(),
  new Font(FontFamily.GenericSansSerif, 8, FontStyle.Regular), Brushes.Black, new RectangleF(e.Bounds.X,
            e.Bounds.Y, e.Bounds.Width, e.Bounds.Height));
        }
    }
}

и
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Лаба4
{
    public partial class Form2 : Form
    {

        private float max;
        public Form2()
        {
            InitializeComponent();
            max = (float) numericUpDown1.Value;
        }

        public float Max
        {
            get { return max; }
        }

        private void 
            btnOK_Click(object sender, EventArgs e)
        {
            Form1 form1 = this.Owner as Form1;
            form1.ListBoxResult.DrawMode = DrawMode.OwnerDrawFixed;
            form1.ListBoxResult.Refresh();
        }

    }
}
Выдает ошибку, что Ссылка на объект не указывает на экземпляр объекта. Для вот этой строчки :
Код:
if (Convert.ToDouble(str[9]) > (double)form2.numericUpDown1.Value)
Помогите разобраться с проблемой
Ангел без крыльев вне форума Ответить с цитированием
Старый 10.04.2012, 14:11   #3
Ангел без крыльев
Пользователь
 
Регистрация: 30.04.2011
Сообщений: 10
По умолчанию

Вот скриншот программы

При нажатии на кнопку ок, в ListBox нужные строки (там где "у" больше значения в numericUpDown1) должны выделиться жирным
Ангел без крыльев вне форума Ответить с цитированием
Старый 11.04.2012, 10:52   #4
cicatrix
Новичок
Джуниор
 
Аватар для cicatrix
 
Регистрация: 09.04.2012
Сообщений: 2
По умолчанию

Код:
Form2 form2 = this.Owner as Form2;
скорее всего здесь this.Owner == null
int GetRandomNumber() { return 4; } // decided by a fair dice roll
cicatrix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с формами маГГ85 PHP 6 16.01.2012 22:18
Работа с формами alexbad Visual C++ 1 25.12.2011 16:23
Работа с формами dscoma Microsoft Office Word 5 18.08.2010 14:09
Работа с формами XPro16 Общие вопросы Delphi 7 26.06.2010 15:12
Работа с формами Claster Общие вопросы Delphi 11 01.02.2010 17:09