当从另一个窗体触发按钮单击事件时,在窗体的面板中绘制一个矩形

阿西什·格格

我目前正在开发 Windows 表单应用程序,其中有两种表单;表格 1 和表格 2。form1 中有一个按钮,单击时会打开 form2,我想要的是在单击 Form2 中的按钮时在 form1 的面板内创建一个矩形。我在form2的按钮单击事件中放置了一些代码来创建矩形,但是单击时它什么也没显示。但是,每当我将 draw.rectangle 方法放在单击按钮的同一个窗体中时,它就可以工作,但不同的是它不起作用

这是form1里面的代码

  private void btnSave_Click(object sender, EventArgs e)
    {
        Layoutsetting a = new Layoutsetting();
        a.ShowDialog();
    }
public void DrawObject()
    {

            Graphics g = panel1.CreateGraphics();
            Rectangle rect = new Rectangle(10, 10, 80, 90);
            rect.Inflate(-10, -10);
            g.DrawRectangle(black, rect);
            g.FillRectangle(Brushes.BlueViolet, rect);
            StringFormat f = new StringFormat();
            f.LineAlignment = StringAlignment.Center;
            f.Alignment = StringAlignment.Center;
            g.DrawString("Hello", this.Font, Brushes.GhostWhite, rect, f);
            panel1.Refresh();
 }

这是form2里面的代码

  private void btnConfirm_Click(object sender, EventArgs e)
    {
        Form1.Default.DrawObject();
        this.Close();
    }
阿什坎·莫巴延·希亚巴尼

问题不在于绘制矩形,只要面板的最细微部分被隐藏(例如,它的一部分在另一个表单后面)就会触发面板绘制事件并重新绘制面板,因此矩形消失(但是当它是如果不触发绘制事件的活动窗体,则矩形将被绘制并且不会被清除,除非您执行某些需要重新绘制面板的操作。)。

简单的解决方案:

创建一个 recangle 图像并在需要时将其用作背景图像,而不是绘制它。

另一个解决方案:

向您的表单(或您的面板)添加一个属性:

public bool NeedsToBeDrawn {get; set;}

而不是这行代码:

Form1.Default.DrawObject();

只需将属性设置为true:

   Form1.NeedsToBeDrawn  = true;

并将您的代码移动到面板的绘制事件:

private void panel1_Paint(object sender, PaintEventArgs e)
{
     if(NeedsToBeDrawn)
     {
            Rectangle rect = new Rectangle(10, 10, 80, 90);
            rect.Inflate(-10, -10);
            e.Graphics.DrawRectangle(black, rect);
            e.Graphics.FillRectangle(Brushes.BlueViolet, rect);
            StringFormat f = new StringFormat();
            f.LineAlignment = StringAlignment.Center;
            f.Alignment = StringAlignment.Center;
            e.Graphics.DrawString("Hello", this.Font, Brushes.GhostWhite, rect, f);
     }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从已经在窗体中的另一个 UserControl 事件中将单例 UserControl 加载到窗体

来自分类Dev

在窗体上方打开另一个窗体后如何关闭窗体

来自分类Dev

关闭子窗体,然后单击C#.net中的用户控件中的按钮,打开另一个窗体?

来自分类Dev

单击按钮时要触发的事件也会触发另一个事件

来自分类Dev

如何在单击另一个MDI子窗体的按钮时刷新一个MDI子窗体的gridview

来自分类Dev

从Visual Basic中另一个窗体的按钮清除窗体的标签

来自分类Dev

关闭另一个窗体时关闭一个窗体

来自分类Dev

WinForms从另一个窗体引发事件

来自分类Dev

单击一个按钮以触发另一个按钮的点击事件

来自分类Dev

从另一个窗体打开新的Windows窗体

来自分类Dev

在同一框架中单击按钮后显示一个面板,在单击第二个按钮时显示另一个面板

来自分类Dev

如何处理另一个窗体的窗体关闭事件(VB.Net)

来自分类Dev

当另一个控件具有焦点时,窗体如何检测KeyDown事件?

来自分类Dev

在Windows窗体上绘制一个移动的矩形

来自分类Dev

防止窗体在打开另一个窗体时跨屏幕移动

来自分类Dev

在 Windows 窗体中由第一个窗体打开的第二个窗体关闭时设置第一个窗体的事件

来自分类Dev

点击事件触发另一个按钮事件

来自分类Dev

如何使从另一个窗体视图打开的窗体视图在odoo中只读

来自分类Dev

如何从另一个仍打开的窗体中检测何时关闭窗体?

来自分类Dev

如何使从另一个窗体视图打开的窗体视图在odoo中只读

来自分类Dev

从另一个子窗体访问子窗体中的控件

来自分类Dev

Ember.js-单击一个按钮以触发另一个按钮的点击事件

来自分类Dev

C#Windows窗体-在没有窗体加载事件的情况下从另一个窗体中获取值

来自分类Dev

通过单击另一个类中的按钮从面板内的事件处理程序关闭 wx.Dialog

来自分类Dev

如何在另一个Windows窗体项目中单击按钮来打开Outlook 2007 Addin项目

来自分类Dev

如何在 Windows 窗体中创建一个按钮,单击该按钮时要求输入两个值

来自分类Dev

当我单击C#中的另一个按钮时如何调用按钮单击事件

来自分类Dev

在按钮单击 c# 时以另一个窗口形式显示面板

来自分类Dev

单击另一个按钮时按钮消失

Related 相关文章

  1. 1

    如何从已经在窗体中的另一个 UserControl 事件中将单例 UserControl 加载到窗体

  2. 2

    在窗体上方打开另一个窗体后如何关闭窗体

  3. 3

    关闭子窗体,然后单击C#.net中的用户控件中的按钮,打开另一个窗体?

  4. 4

    单击按钮时要触发的事件也会触发另一个事件

  5. 5

    如何在单击另一个MDI子窗体的按钮时刷新一个MDI子窗体的gridview

  6. 6

    从Visual Basic中另一个窗体的按钮清除窗体的标签

  7. 7

    关闭另一个窗体时关闭一个窗体

  8. 8

    WinForms从另一个窗体引发事件

  9. 9

    单击一个按钮以触发另一个按钮的点击事件

  10. 10

    从另一个窗体打开新的Windows窗体

  11. 11

    在同一框架中单击按钮后显示一个面板,在单击第二个按钮时显示另一个面板

  12. 12

    如何处理另一个窗体的窗体关闭事件(VB.Net)

  13. 13

    当另一个控件具有焦点时,窗体如何检测KeyDown事件?

  14. 14

    在Windows窗体上绘制一个移动的矩形

  15. 15

    防止窗体在打开另一个窗体时跨屏幕移动

  16. 16

    在 Windows 窗体中由第一个窗体打开的第二个窗体关闭时设置第一个窗体的事件

  17. 17

    点击事件触发另一个按钮事件

  18. 18

    如何使从另一个窗体视图打开的窗体视图在odoo中只读

  19. 19

    如何从另一个仍打开的窗体中检测何时关闭窗体?

  20. 20

    如何使从另一个窗体视图打开的窗体视图在odoo中只读

  21. 21

    从另一个子窗体访问子窗体中的控件

  22. 22

    Ember.js-单击一个按钮以触发另一个按钮的点击事件

  23. 23

    C#Windows窗体-在没有窗体加载事件的情况下从另一个窗体中获取值

  24. 24

    通过单击另一个类中的按钮从面板内的事件处理程序关闭 wx.Dialog

  25. 25

    如何在另一个Windows窗体项目中单击按钮来打开Outlook 2007 Addin项目

  26. 26

    如何在 Windows 窗体中创建一个按钮,单击该按钮时要求输入两个值

  27. 27

    当我单击C#中的另一个按钮时如何调用按钮单击事件

  28. 28

    在按钮单击 c# 时以另一个窗口形式显示面板

  29. 29

    单击另一个按钮时按钮消失

热门标签

归档