Winfrom控件使用

1.Lablelable添加图片,解决图片和字体重叠?

Text属性添加足够空格即可,显示效果如下所示:

2.根据窗体名称获取窗体并显示到指定panel?

Label item = sender as Label;

if (item == null) return;

Assembly assembly = Assembly.GetExecutingAssembly();
var path = "ZB.PISS.StatisticsSys.View." + item.Name;
Form form = assembly.CreateInstance(path) as Form;
if (form == null) return;

this.panelContent.Controls.Clear();
form.TopLevel = false;
form.FormBorderStyle = FormBorderStyle.None;
form.Dock = DockStyle.Fill;
form.Parent = this.panelContent;
this.panelContent.Controls.Add(form);
form.Show();

注意:item.Name为获取到的窗体名称,如:LoginForm.

3.panel添加控件并为控件添加事件?

public class MenuItemNodes
    {
        public string Value { get; set; }
        public string Name { get; set; }
    }

private void InitNavigation(List<MenuItemNodes> items)
        {
            if (items == null) return;

            this.panleNavigation.Controls.Clear();
            foreach (MenuItemNodes item in items)
            {
                Add(new Label(), item, this.panleNavigation);
            }
        }

        private void Add(Label item, MenuItemNodes node, Panel panel)
        {
            item.Name = node.Name;
            item.Text = node.Value;
            item.Size = new Size(1500, 35);
            item.TextAlign = ContentAlignment.MiddleLeft;
            item.ForeColor = Color.White;
            item.Font = new Font("微软雅黑", 12f, FontStyle.Bold);
            //34, 95, 129
            item.BackColor = System.Drawing.Color.FromArgb(55, 139, 175);
            item.BorderStyle = BorderStyle.FixedSingle;

            if (panel.Controls.Count == 0) item.Location = new Point();
            else
            {
                int y = 0;
                int x = 0;
                if (panel.Controls.Count % 1 > 0)
                {
                    y = panel.Controls[panel.Controls.Count - 1].Location.Y;
                    x = panel.Controls[panel.Controls.Count - 1].Location.X + item.Width;
                }
                else
                {
                    y = panel.Controls[panel.Controls.Count - 1].Location.Y + item.Height;
                    x = panel.Controls[panel.Controls.Count - 1].Location.X;
                }

                item.Location = new Point(x, y);
            }
            item.MouseClick -= item_MouseClick;
            item.MouseClick += new MouseEventHandler(item_MouseClick);  

            panel.Controls.Add(item);
        }

 void item_MouseClick(object sender, MouseEventArgs e)
{
}
时间: 2024-12-18 18:26:37

Winfrom控件使用的相关文章

c# vs2010 winfrom控件检测网络环境

写下以作备用,代码附上. public partial class UserControl1 : UserControl, IObjectSafety { //检测网络状态 [DllImport("wininet.dll")] private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue); /// <summary> /// 检测网

WPF 精修篇 WPF嵌入Winfrom控件

原文:WPF 精修篇 WPF嵌入Winfrom控件 先增加DLL 支持 使用  WindowsFormsHost 来加载Forms的控件 引用命名空间 xmlns:forms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" <WindowsFormsHost Grid.Column="1"> <forms:PropertyGrid x:Name="Pro

winfrom控件——基本工具

窗体事件:属性—事件—load(双击添加) 窗体加载完之后的事件: 删除事件:先将属性事件里挂号的事件名删掉(行为里的load)再删后台代码里的事件. 控件:工具箱里(搜索—双击或点击拖动到窗体界面) 1.label——文本显示工具 属性:text:显示文字(font .forecolor这些属性都可使用,改变字体等) 每一个控件或工具都有一个name;并且不允许重复,设置name为:biaoti. 在后台代码里怎么写: 2.Textbox——文本框(允许用户输入的)和lable相同 3.Ric

winfrom 控件的显示隐藏方法

使用Panel作为容器 Panel2.Visible = true; //显示 Panel1.Visible = false; //隐藏 原文地址:https://www.cnblogs.com/wrld/p/10159918.html

Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决

有人会说不建议Wpf中使用Winform控件,有人会说建议使用Winform控件在Wpf下的替代方案,然而在实际工作中由于项目的特殊需求,考虑到时间.成本等因素,往往难免会碰到在WPF中使用Winfrom控件的问题,我们知道Wpf可以通过使用WindowsFormsHost容器调用Winform控件,但是在一些场合需要将Wpf元素显示在Winform控件的上层,此时就会出现Wpf元素被Winform控件遮盖的问题. 一.场景再现 接到公司命令,在时间紧迫的情况下,需要将原来的Winform程序(

WinFrom ProgressBar控件的使用

在WinForm程序中,大多数情况下我们是知道程序运行所需要的时间或步骤的,比如批量复制文件时文件的数量,数据导出或导入时数据的总行数等等.对于步骤比较确定的操作,如果程序执行过程时间较长,很容易使用BackgroundWorker结合ProgressBar来显示一个实时的进度.相关内容大家可以看我博客中的其它文章,有关如何使用BackgroundWorker和ProgressBar.但是,有的时候我们是不确定程序执行的具体步骤或时长的,比如连接一个远程服务或数据库服务,或者调用一个远程过程或W

winfrom获取用户控件里的控件对象

如何获取用户控件里的控件对象呢,其实思路也是很简单的, 比如有一个panel 用户控件 里面有许多的其他控件. 那么要找出一个Label控件怎么找呢,好的.现在我们就开始 首先,一个foreach循环获得所有控件. 然后根据类型筛选出这个类型的所有控件.然后就可以用Name来判断了 foreach(var lb in mi_image1.Controls) {    if (lb is Label)    {         Label obj = lb as Label;   //如果把循环改

winfrom中DataGridView绑定数据控件中DataGridViewCheckBoxColumn怎么选中

for (int i = 0; i < this.dataGridView1.Rows.Count; i++) { this.dataGridView1.Rows[i].Cells["CheckBoxCulums"].Value = this.checkBox1.Checked; } winfrom中DataGridView绑定数据控件中DataGridViewCheckBoxColumn怎么选中,布布扣,bubuko.com

Winfrom 跨线程更新控件

来源:http://www.cnblogs.com/rainbowzc/archive/2010/09/29/1838788.html 由于多线程可能导致对控件访问的不一致,导致出现问题.C#中默认是要线程安全的,即在访问控件时需要首先判断是否跨线程,如果是跨线程的直接访问,在运行时会抛出异常. 解决办法有两个: 1.不进行线程安全的检查 2.通过委托的方式,在控件的线程上执行 常用写法:(不安全) private void WriteToolStripMsg(string msg, Color