C#动态生成控件,在控件上面画线条

房东的猫爱喵喵喵 2016-08-06 05:10:15
小白菜求教,为什么下面这段代码label可以显示出来,画的直线显示不出来呢?
我是想在tb_ShowBusbar这个tabControl上面动态生成几个tabpage,在每个tabpage上画线条,然后线条显示不出来,我就动态生成了label做实验,发现label可以显示,但是线条却显示不出来?


foreach (Control c in this.tb_ShowBusbar .Controls )
{
if (c is TabPage &&c.Name.Equals("tp_BusbarInformation1"))
{

Graphics graphics = c.CreateGraphics();
Pen myPen = new Pen(Color.Black, 3);
graphics.DrawLine(myPen, 0, 0, 200, 200);

Label ll = new Label();
ll.Text = "ddd";
c.Controls.Add(ll);


}
}
...全文
334 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-08-06
  • 打赏
  • 举报
回复
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            var o = new Label();
            o.Text = "ABCDEFG";
            o.Paint += new PaintEventHandler(o_Paint);
            Controls.Add(o);
        }

        void o_Paint(object sender, PaintEventArgs e)
        {
            var c = sender as Control;
            var g = e.Graphics;
            g.DrawLine(Pens.Red, 0, 0, c.Width, c.Height);
        }
    }
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
一个是一边添加一边画线 一个是先添加,后画线 次序不同,效果自然也不同 向容器添加控件,必然引起容器刷新。所以你画的线被刷掉了 即便是你 #4 的代码,画好线后,最小化后再还原,画的线就没有了
我傻了,应该是e.Graphics,谢谢你的解答
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
一个是一边添加一边画线 一个是先添加,后画线 次序不同,效果自然也不同 向容器添加控件,必然引起容器刷新。所以你画的线被刷掉了 即便是你 #4 的代码,画好线后,最小化后再还原,画的线就没有了
private void p_Paint(object sender, PaintEventArgs e) { Graphics graphics = this.CreateGraphics(); Pen myPen = new Pen(Color.Black, 3); graphics.DrawLine(myPen, 0, 0, 0, 200); } 事件 我是这么写的,在生成panel的时候触发 Panel p = new Panel(); p.Name = "panel_ShowBuabar" + c.Name.Substring(c.Name.Length - 1, 1); p.Dock = DockStyle.Fill; p.Paint +=new PaintEventHandler(p_Paint); c.Controls.Add(p); 为啥还是显示不了呢?
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
一个是一边添加一边画线 一个是先添加,后画线 次序不同,效果自然也不同 向容器添加控件,必然引起容器刷新。所以你画的线被刷掉了 即便是你 #4 的代码,画好线后,最小化后再还原,画的线就没有了
那请问如何给动态生成的空降,比如panel,添加paint事件呢?怎么触发这个事件?
xuzuning 2016-08-06
  • 打赏
  • 举报
回复
一个是一边添加一边画线 一个是先添加,后画线 次序不同,效果自然也不同 向容器添加控件,必然引起容器刷新。所以你画的线被刷掉了 即便是你 #4 的代码,画好线后,最小化后再还原,画的线就没有了
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
要在 paint 事件里画
应该不是这个问题吧,我后来有新建了一个文件,可以添加直线的

  private void button1_Click(object sender, EventArgs e)
        {
            Panel p = new Panel();
            p.Name = "pp";
           // p.Location = new Point(0,0);
            p.Dock = DockStyle.Fill  ;
            this.Controls.Add(p);  
        }

        private void button2_Click(object sender, EventArgs e)
        {
            foreach (Control c in this.Controls)
            {
                if (c is Panel &&c.Name.Equals("pp"))
                {
                    Graphics graphics = c.CreateGraphics();
                    Pen myPen = new Pen(Color.Black, 3);
                    graphics.DrawLine(myPen, 200,0, 200, 200);
//                     Label ll = new Label();
//                     ll.Text = "ddd";
//                     c.Controls.Add(ll);
                }
            }
        }
  • 打赏
  • 举报
回复
引用 2 楼 yuankaiwsl 的回复:
先Add label再DrawLine试试
其实我加label只是个实验,主要是画线,label是不用的
巴士上的邂逅 2016-08-06
  • 打赏
  • 举报
回复
先Add label再DrawLine试试
xuzuning 2016-08-06
  • 打赏
  • 举报
回复
要在 paint 事件里画
辅助软件 aspx/asp代码生成器 语言规范 C# Language Specification 1.2(C#语言规范1.2).doc C# Language Specification 2.0(C#语言规范2.0).doc 源码教程 ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_运算符重载.htm.txt 10_阴影和深度复制.htm.txt 11_事件基础.htm.txt 12_事件进阶.htm.txt 13_读写Txt文件.htm.txt 14_StatusBar控件.htm.txt 15_自定义控件.htm.txt 16_使用打开保存文件对话框.htm.txt 17_图形绘制基础.htm.txt 18_图形绘制进阶-线条、字体.htm.txt 19_图形绘制进阶-图像(双倍缓冲).htm.txt 20_Windows应用程序安装部署概念.htm.txt 21_使用文件基础.htm.txt 22_使用文件高级.htm.txt 23_串行化和并行化.htm.txt 技术资料 ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL中合并单元格.txt mail.txt NET在RichTextBox控件加入图片(类似QQ).txt send.txt SQL储存过程等的解密.txt VisualC#打造“浏览器”.txt vs2005常用快捷键.txt webcontrol和pagelet.txt win2003中配置msdtc.txt word导出.txt 保证应用程序只有一个实例运行.txt 编辑字段中的word文件.txt 编码标准.txt 播放声音.txt 捕捉DataGrid的双击事件(C#版本).txt 不显示窗口后台运行程序.txt 储存过程.txt 处理“进程性能计数器被禁用”的错误.txt 串口操作.txt 打开word文件.txt 打造“浏览器”.txt 带图标和自定义颜色的ListBox.txt 得到当前数据库中所有用户表信息.txt 读取、设置系统时间日期.txt 读写注册表.txt 对过程进行加密.txt 二进制数据保存.txt 二进制数据字段的更新.txt 分页及动态创建列的控件 .txt 改变Windows服务的启动顺序.txt 各进制之间的转换.txt 给图片添加版权信息.txt 关于拖放操作.txt 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法.txt 带阴影效果的文字.txt 环境信息.txt 获得光标在多行textbox中的行与列的函数.txt 计算控件中文字所占的宽度.txt 加半透明图片水印.txt 将控件放到datagrid中以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用中属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和键盘操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET中建立一个平滑的进度条.txt 如何得到网卡号.txt 如何调用WindowsAPI的要点.txt 如何控制输入法.txt 如何利用GDI作图解决异或问题.txt 如何取硬件标志.txt 如何让应用程序只有一个实例运行.txt 如何如何插入照片到Excel.txt 如何识别键盘左右的shift,Ctrl或Alt键.txt 如何水晶按钮的程序生成.txt 如何为DataGrid添加下拉列表框.txt 如何用C#在Excel中生成图表?.txt 如何用程序实现键盘和鼠标的模拟?.txt 如何与资源管理器互动剪切、拷贝、粘贴文件.txt 深入理解C#编程中的组件-事件-委托.txt 生成透明的GIF图片 .txt 生成压缩图片时的2种方法.txt 使用C#返回系统特殊路径.txt 使用VisualC#.NET检查Windows版本.txt 使用Win32和其他库.txt 使用自己的光标.txt 数据绑定.txt 水晶报表使用winform.txt 水印.txt 特殊文件夹路径.txt 同一解决方案中一个项目的xml注释在另一个项目中不能智能提示显示这些注释的解决方法.txt 图像读取.txt 无标题窗口的拖放.txt 下面的5行代码完成了从局域网中找出所有的机器.txt 显示DataGrid序号的一个适用的方法.txt 用C#快速往Excel写数据.txt 用C#来捕获屏幕.txt 用C#做ScreenSaver.txt 用imgscan.ocx来扫描图像.txt 用word填充表格.txt 用户登录组合控件.txt 在.NET中得到计算机硬件信息的一些功能.txt 在MapX中响应滚轮放大缩小地图.txt 在两个ASP.NET页面之间传递值.txt 在如何利用SharpZipLib进行文件的压缩和解压缩.txt 怎样打开关闭CDROM.txt 怎样检测网络中的电脑是否有安装SQL2000.txt 怎样写一个存储过程类来实现如何对存储过程的调用?.txt 直接拉入图片文件到程序窗口中打开.txt 指定Web服务器运行的不是ASP.NET1.1版.txt 字符串加密.txt 字幕显示屏幕保护.txt 自己动手用c#控件.txt C#试题 简答题.txt 填空题.txt 问答题1.txt 问答题2.txt 选择题.txt 综合题.txt
没法下载,到这里折腾一把试试。 本文由abc2253130贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 C#(WINFORM)学习 一、 C#基础 基础 类型和变量 类型和变量 类型 C# 支持两种类型:“值类型”和“引用类型”。值类型包括简单类型(如 char、int 和 float 等)、枚举类型和结构类型。引用类型包括类 (Class)类 型、接口类型、委托类型和数组类型。 变量的类型声明 变量的类型声明 每个变量必须预先声明其类型。如 int a; int b = 100; float j = 4.5; string s1; 用 object 可以表示所有的类型。 预定义类型 下表列出了预定义类型,并说明如何使用。 类型 object 说明 所有其他类型的最终 基类型 字符串类型; 字符串是 Unicode 字符序列 8 位有符号整型 16 位有符号整型 32 位有符号整型 64 位有符号整型 示例 object o = null; 范围 string sbyte short int long string s = "hello"; sbyte val = 12; short val = 12; int val = 12; long val1 = 12; -128 到 127 -32,768 到 32,767 -2,147,483,648 2,147,483,647 -9,223,372,036,854,775,808 到 第1页 C#(WINFORM)学习 long val2 = 34L; 到 9,223,372,036,854,775,807 byte ushort 8 位无符号整型 16 位无符号整型 byte val1 = 12; ushort val1 = 12; uint val1 = 12; uint 32 位无符号整型 uint val2 = 34U; ulong val1 = 12; ulong val2 = 34U; ulong 64 位无符号整型 ulong val3 = 56L; ulong val4 = 78UL; float 单精度浮点型 float val = 1.23F;7 位 double val1 = 1.23; double 双精度浮点型 double val2 = ±5.0 × 10?324 ±1.7 × 10 308 0 到 255 0 到 65,535 0 到 4,294,967,295 0 到 18,446,744,073,709,551,615 ±1.5 × 10?45 ±3.4 × 10 38 到 到 4.56D;15-16 布尔型;bool 值或为 真或为假 字符类型;char 值是 一个 Unicode 字符 精确的小数类型, 具有 28 个有效数字 bool val1 = true; bool val2 = false; char val = 'h'; decimal val = bool char decimal DateTime ±1.0 × 10?28 ±7.9 × 10 28 到 1.23M;28-29 变量转换 简单转换: float f = 100.1234f; 可以用括号转换: short s = (short)f 也可以利用 Convert 方法来转换: string s1; s1=Convert.ToString(a); MessageBox.Show(s1); 常用 Convert 方法有: 第2页 C#(WINFORM)学习 C# Convert.ToBoolean Convert.ToByte Convert.ToChar Convert.ToDateTime Convert.ToDecimal Convert.ToDouble Convert.ToInt16 Convert.ToInt32 Convert.ToInt64 Convert.ToSByte Convert.ToSingle Convert.ToString Convert.ToUInt16 Convert.ToUInt32 Convert.ToUInt64 备注 Math 类 常用科学计算方法: C# Math.Abs Math.Sqrt Math.Ro
语言规范 C# Language Specification 1.2(C#语言规范1.2).doc C# Language Specification 2.0(C#语言规范2.0).doc 源码教程 ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_运算符重载.htm.txt 10_阴影和深度复制.htm.txt 11_事件基础.htm.txt 12_事件进阶.htm.txt 13_读写Txt文件.htm.txt 14_StatusBar控件.htm.txt 15_自定义控件.htm.txt 16_使用打开保存文件对话框.htm.txt 17_图形绘制基础.htm.txt 18_图形绘制进阶-线条、字体.htm.txt 19_图形绘制进阶-图像(双倍缓冲).htm.txt 20_Windows应用程序安装部署概念.htm.txt 21_使用文件基础.htm.txt 22_使用文件高级.htm.txt 23_串行化和并行化.htm.txt 技术资料 ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL中合并单元格.txt mail.txt NET在RichTextBox控件加入图片(类似QQ).txt send.txt SQL储存过程等的解密.txt VisualC#打造“浏览器”.txt vs2005常用快捷键.txt webcontrol和pagelet.txt win2003中配置msdtc.txt word导出.txt 保证应用程序只有一个实例运行.txt 编辑字段中的word文件.txt 编码标准.txt 播放声音.txt 捕捉DataGrid的双击事件(C#版本).txt 不显示窗口后台运行程序.txt 储存过程.txt 处理“进程性能计数器被禁用”的错误.txt 串口操作.txt 打开word文件.txt 打造“浏览器”.txt 带图标和自定义颜色的ListBox.txt 得到当前数据库中所有用户表信息.txt 读取、设置系统时间日期.txt 读写注册表.txt 对过程进行加密.txt 二进制数据保存.txt 二进制数据字段的更新.txt 分页及动态创建列的控件 .txt 改变Windows服务的启动顺序.txt 各进制之间的转换.txt 给图片添加版权信息.txt 关于拖放操作.txt 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法.txt 带阴影效果的文字.txt 环境信息.txt 获得光标在多行textbox中的行与列的函数.txt 计算控件中文字所占的宽度.txt 加半透明图片水印.txt 将控件放到datagrid中以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用中属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和键盘操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET中建立一个平滑的进度条.txt 如何得到网卡号.txt 如何调用WindowsAPI的要点.txt 如何控制输入法.txt 如何利用GDI作图解决异或问题.txt 如何取硬件标志.txt 如何让应用程序只有一个实例运行.txt 如何如何插入照片到Excel.txt 如何识别键盘左右的shift,Ctrl或Alt键.txt 如何水晶按钮的程序生成.txt 如何为DataGrid添加下拉列表框.txt 如何用C#在Excel中生成图表?.txt 如何用程序实现键盘和鼠标的模拟?.txt 如何与资源管理器互动剪切、拷贝、粘贴文件.txt 深入理解C#编程中的组件-事件-委托.txt 生成透明的GIF图片 .txt 生成压缩图片时的2种方法.txt 使用C#返回系统特殊路径.txt 使用VisualC#.NET检查Windows版本.txt 使用Win32和其他库.txt 使用自己的光标.txt 数据绑定.txt 水晶报表使用winform.txt 水印.txt 特殊文件夹路径.txt 同一解决方案中一个项目的xml注释在另一个项目中不能智能提示显示这些注释的解决方法.txt 图像读取.txt 无标题窗口的拖放.txt 下面的5行代码完成了从局域网中找出所有的机器.txt 显示DataGrid序号的一个适用的方法.txt 用C#快速往Excel写数据.txt 用C#来捕获屏幕.txt 用C#做ScreenSaver.txt 用imgscan.ocx来扫描图像.txt 用word填充表格.txt 用户登录组合控件.txt 在.NET中得到计算机硬件信息的一些功能.txt 在MapX中响应滚轮放大缩小地图.txt 在两个ASP.NET页面之间传递值.txt 在如何利用SharpZipLib进行文件的压缩和解压缩.txt 怎样打开关闭CDROM.txt 怎样检测网络中的电脑是否有安装SQL2000.txt 怎样写一个存储过程类来实现如何对存储过程的调用?.txt 直接拉入图片文件到程序窗口中打开.txt 指定Web服务器运行的不是ASP.NET1.1版.txt 字符串加密.txt 字幕显示屏幕保护.txt 自己动手用c#控件.txt C#试题 简答题.txt 填空题.txt 问答题1.txt 问答题2.txt 选择题.txt 综合题.txt 辅助软件 aspx/asp代码生成
学习以c#的必备书 本书介绍了如何使用Visual C++ 6.0编写Windows应用程序。全书内容全面、结构清晰、由浅入深、注重实用,并结合了大量的实例,以方便读者理解。本书既包含菜单、鼠标、键盘等基本操作,又包含图形编程、Internet程序设计、数据库编程等高级主题。每章讲述一个主题,在展示知识点的同时,提供具体的演示实例,最后两章详细讲解了两个综合实例,以使读者对Visual C++编程技术有整体的认识。 目 录 第一篇 Visual C++基础 第1章 Visual C++集成开发环境 2 1.1 Visual C++的版本 2 1.2 安装Visual C++ 6.0 3 1.3 Visual C++集成开发环境 6 1.3.1 菜单栏 7 1.3.2 工具栏 11 1.3.3 工作区窗口 13 1.3.4 输出窗口 14 1.4 编写第一个程序Hello World 14 1.4.1 创建Hello World工程 15 1.4.2 编译并执行程序 16 1.5 小结 16 第2章 使用Visual C++创建基本应用程序 17 2.1 理解Visual C++工程 17 2.2 Visual C++中应用程序的类型 18 2.2.1 控制台应用程序 18 2.2.2 基于对话框的应用程序 19 2.2.3 单文档应用程序 19 2.2.4 多文档应用程序 19 2.2.5 基于HTML文档的应用程序 19 2.3 创建应用程序框架 20 2.3.1 创建基于对话框的应用程序 20 2.3.2 创建单文档应用程序 21 2.3.3 创建多文档应用程序 23 2.3.4 创建基于HTML的应用程序 24 2.4 小结 25 第3章 面向对象程序设计基础 26 3.1 面向过程与面向对象 26 3.1.1 面向过程的问题 26 3.1.2 面向对象的特性 27 3.2 C++类的基本概念 27 3.2.1 结构体与类 27 3.2.2 类与对象 29 3.2.3 类的声明、定义和实现 29 3.2.4 成员变量 31 3.2.5 成员函数 32 3.2.6 静态成员 34 3.2.7 this指针 35 3.3 构造函数 37 3.3.1 使用构造函数的原因 37 3.3.2 构造函数的使用 37 3.3.3 重载构造函数 40 3.3.4 析构函数 41 3.4 继承 43 3.4.1 继承的概念 43 3.4.2 继承的工作机制 43 3.4.3 公有继承 44 3.4.4 私有继承 46 3.4.5 保护继承 47 3.4.6 多重继承 49 3.5 异常处理 51 3.5.1 异常的概念 51 3.5.2 异常处理机制 51 3.5.3 基本异常处理方法 52 3.5.4 多个异常处理方法 54 3.6 小结 56 第4章 Visual C++调试技术 57 4.1 Debug与Release 57 4.2 调试的过程 58 4.2.1 设置断点 58 4.2.2 控制程序的运行 60 4.3 使用查看工具 60 4.3.1 弹出式调试信息泡泡 61 4.3.2 变量窗口 61 4.3.3 观察窗口 61 4.3.4 快速查看窗口 62 4.3.5 内存查看窗口 62 4.3.6 寄存器窗口 62 4.3.7 调用堆栈窗口 63 4.4 其他调试技术 63 4.4.1 TRACE宏 63 4.4.2 ASSERT宏 64 4.4.3 VERIFY宏 64 4.5 小结 64 第二篇 Windows编程 第5章 Windows程序设计 66 5.1 Windows编程简介 66 5.1.1 Windows API概述 66 5.1.2 Windows应用程序中的常用术语 69 5.2 Windows应用程序运行机制 71 5.2.1 生成Windows应用程序框架 71 5.2.2 在Windows应用程序中添加代码 71 5.2.3 编译并执行程序 74 5.3 程序入口:WinMain()函数 74 5.3.1 WinMain()函数的定义 75 5.3.2 定义和注册窗口类 76 5.3.3 创建窗口 77 5.3.4 显示和更新窗口 78 5.3.5 消息循环 78 5.4 窗口过程函数和消息处理 80 5.4.1 窗口过程函数 80 5.4.2 常用消息的处理 82 5.5 小结 84 第6章 MFC编程概述 85 6.1 MFC概述 85 6.1.1 MFC设计原理 85 6.1.2 MFC特点 86 6.1.3 MFC AppWizard向导 86 6.2 MFC层次结构设计 88 6.2.1 单文档应用程序的构成 88 6.2.2 CObject类 90 6.2.3 CCmdTarget

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧