Как нарисовать Rectangle после запуска вручную из WinForm?

Я собираюсь создать программу, которая рисует различные формы на экране. Для этого я создал два WinForme. Первый (ActiveHandle) предназначен для выбора фигуры для рисования. Для этого я использовал флажки, каждый из которых описывает значение в файле настроек. Это работает до сих пор. Но если я сейчас открою вторую форму (form1.Show ()), чтобы нарисовать графику без фона на экране, это не будет работать.

Мой вопрос сейчас. Что я упустил из виду или что я должен улучшить, чтобы увидеть изображение? Когда я использую form1 в качестве StartForm, все работает отлично.

Здесь у меня есть исходный код двух форм.

ActiveHandle (элемент управления form1 и фигуры)(активный или неактивный bShapeDrawing в form1)

public partial class ActiveHandle : Form
{
    public ActiveHandle()
    {
        InitializeComponent();
    }

    private void ActiveHandle_Load(object sender, EventArgs e)
    {

    }

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        if (checkBox1.Checked == true)
        {
            Properties.Settings.Default.bShapeDrawing = true;
        }
        else
        {
            Properties.Settings.Default.bShapeDrawing = false;
        }            
    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.Visible = false;

        Form1 form1 = new Form1();
        form1.Show();
    }
}

Form1 (рисует фигуры без фона и рамки на экране, когда нажата правая кнопка мыши и bShapeDrawing равно true)

public partial class Form1 : Form
{
    public int iWidth;
    public int iHight;       

    public Form1()
    {
        InitializeComponent();            
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        int iWidth = SystemInformation.VirtualScreen.Width;
        int iHight = SystemInformation.VirtualScreen.Height;

        Console.WriteLine("Form1 loading");            
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        Console.WriteLine("Form1 timer1 is ticking");
        if (Properties.Settings.Default.bShapeDrawing == true)
        {
            Console.WriteLine("Form1 trying to draw");
            Graphics g = this.CreateGraphics();
            Pen selPen = new Pen(Color.Red, 2);

            if (Control.MouseButtons == MouseButtons.Right)
            {
                g.DrawRectangle(selPen, iWidth / 2 - 5, iHight / 2 - 5, 5, 5);
                Console.WriteLine("Form1 drawing complete");
            }
            else
            {
                this.Invalidate();
            }
        }
        else
        {
            // Drawing deactivated
        }
    }
}

0 ответов

Другие вопросы по тегам