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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2018, 21:27   #1
chika007
Новичок
Джуниор
 
Регистрация: 06.05.2018
Сообщений: 2
По умолчанию [C#] При нажатии на кнопку на pictureBox не рисуется прямоугольник. Может есть ошибка? Помогите

При нажатии на кнопку на pictureBox не рисуется прямоугольник. Может есть ошибка? Помогите!

Код:
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.Drawing.Drawing2D;

namespace Курсовой_ОС
{
    public partial class Form1 : Form
    {
        Page[] binaryvector; //структура данных хранящая иформацию о занятых и свободных страницах
        int count;//вспомогательная переменная для задания идентификатора страницам
        int APOPsize;//размер АП ОП
        int size;//размер страниц

     public Form1()
        {
             InitializeComponent();
             size = 16;
             binaryvector = new Page[APOPsize / size];
             count = 0;
             APOPsize = 256;   
        }

     public class Page//класс страницы
     {
         string name;//идентификатор
         int size;//размер
         int adress;//адрес
         bool busy;//занятость страницы
         Rectangle rect;

     public Page(int adress, int size, Rectangle rect)//конструктор
     {
         this.adress = adress;
         this.size = size;
         this.rect = rect;
     }
     public int Size
     {
         get { return size; }
         set { size = value; }
     }
     public int Adress
     {
         get { return adress; }
         set { adress = value; }
     }
     public Rectangle Rect
     {
         get { return rect; }
         set { rect = value; }
     }
     public string Name
     {
         get { return name; }
         set { name = value; }
     }
     public bool Busy
     {
         get { return busy; }
         set { busy = value; }
     }
     public void Draw(Graphics e)//отрисовка на форме
     {
      e.FillRectangle(new SolidBrush(Color.Orange), rect);
      e.DrawRectangle(new Pen(Color.Black), rect);
      e.DrawString(name + " Адрес " + adress + " Размер " + size, new Font("Arial", 9), new SolidBrush(Color.Black), rect.Location);
     }
   }
     private void button3_Click(object sender, EventArgs e) // Размещение страницы
     {
         bool temp = false;
         for (int i = 0; i < binaryvector.Length; i++)
         {
             if (binaryvector[i].Busy == false)
             {
                 binaryvector[i].Name = "Страница " + count;
                 binaryvector[i].Busy = true;
                 listBox1.Items.Add(binaryvector[i].Adress);
                 temp = true;
                 break;
             }
         }
         if (temp == false)
         {
             Random rnd = new Random();
             int r = rnd.Next(0, binaryvector.Length);
             binaryvector[r].Name = "Страница " + count;
         }
         count++;
         pictureBox1.Refresh();
         button4.Enabled = true;
         listBox1.Enabled = true; ;
     }
     private void button4_Click(object sender, EventArgs e) // удаление (освобождение) страницы
     {
         for (int i = 0; i < binaryvector.Length; i++)
         {
             if (Convert.ToInt32(listBox1.SelectedItem) == Convert.ToInt32(binaryvector[i].Adress))
             {
                 listBox1.Items.Remove(Convert.ToInt32(binaryvector[i].Adress));
                 binaryvector[i].Busy = false;
                 pictureBox1.Refresh();
             }
         }
         bool temp = false;
         for (int i = 0; i < binaryvector.Length; i++)
         {
             if (binaryvector[i].Busy == true)
             {
                 temp = true;
             }
         }
         if (temp == false)
         {
             button4.Enabled = false;
             listBox1.Enabled = false;
         }
     }
     private void Form1_Paint(object sender, PaintEventArgs e) //Отображение АП ПО
     {
         e.Graphics.DrawString("0", new Font("Arial", 9), new SolidBrush(Color.Black), pictureBox1.Location.X - 10, pictureBox1.Location.Y - 10);
         e.Graphics.DrawString(Convert.ToString(APOPsize), new Font("Arial", 9), new SolidBrush(Color.Black), pictureBox1.Location.X - 25, pictureBox1.Location.Y + pictureBox1.Height);
     }
     private void pictureBox1_Paint(object sender, PaintEventArgs e)//отображение страниц
     {
         if (binaryvector.Length != 0)
         {
             for (int i = 0; i < binaryvector.Length; i++)
             {
                 if (binaryvector[i].Busy == true)
                 {
                     binaryvector[i].Draw(e.Graphics);
                 }
             }
         }
     }
     private void button5_Click(object sender, EventArgs e) //Освобождение АП
     {
         button3.Enabled = false;
         button2.Enabled = false;
         comboBox2.Enabled = false;
         button1.Enabled = true;
         comboBox1.Enabled = true;
         button4.Enabled = false;
         listBox1.Enabled = false;
         listBox1.Items.Clear();
         for (int i = 0; i < binaryvector.Length; i++)
         {
             binaryvector[i].Busy = false;
         }
         count = 0;
         pictureBox1.Refresh();
     }
     private void button2_Click(object sender, EventArgs e) // задать размер страницы
     {
         size = Convert.ToInt32(comboBox2.Text);
         if (size <= APOPsize)
         {
             binaryvector = new Page[APOPsize / size];
             for (int i = 0; i < binaryvector.Length; i++)
             {
                 binaryvector[i] = new Page(i * size, size, new Rectangle(new Point(0, i * pictureBox1.Height / binaryvector.Length), new Size(pictureBox1.Width, pictureBox1.Height / binaryvector.Length)));
             }
             button2.Enabled = false;
             comboBox2.Enabled = false;
             button3.Enabled = true;
         }
         else MessageBox.Show("Размер страницы должен быть меньше размера адресного пространства");
     }
        private void button1_Click(object sender, EventArgs e)
           {
            APOPsize = Convert.ToInt32(comboBox1.Text);
            this.Refresh();
            button1.Enabled = false;
            comboBox1.Enabled = false;
            button2.Enabled = true;
            comboBox2.Enabled = true;
           }

        private void Form1_Load(object sender, EventArgs e)
        {
            button2.Enabled = false;
            comboBox2.Enabled = false;
            button3.Enabled = false;
            button4.Enabled = false;
            listBox1.Enabled = false;
        }
   }
 }

Пожалуйста, оформляйте программный код по правилам. Модератор.

Последний раз редактировалось Вадим Мошев; 01.06.2018 в 12:54.
chika007 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать кнопку при нажатии показывался объект, при повторном нажатии пропадал. nyqpblcTuk Microsoft Office Excel 3 31.08.2017 14:32
Ошибка "External: sigsegv" при нажатии на кнопку голова Lazarus, Free Pascal, CodeTyphon 4 30.06.2015 16:22
Изменение изображения picturebox при нажатии на пункт listbox NeedLess Общие вопросы C/C++ 2 28.06.2012 19:43
Есть 6 фоток, нужно чтоб при нажатии на кнопку Button эти фотки поочередно менялись ZVEN59 Общие вопросы Delphi 1 06.06.2012 22:50
pascalABC.net. При нажатии на кнопку вылетает ошибка на readln barygan Паскаль, Turbo Pascal, PascalABC.NET 4 15.04.2011 22:00