精华内容
下载资源
问答
  • c# winform 动态添加多个之定义控件,怎么可以访问某一个控件的事件呢 ``` for (int i = 0; i ; i++) { Control.Refueller r1 = new Control.Refueller(); r1.Name = "jy"+i; r1.Size = new Size(220, ...
  • C# winform 动态添加自定义控件

    千次阅读 2019-12-30 13:53:18
    //调用添加文本控件的方法 AddTxt(gbox); } } //添加文本控件 public void AddTxt(GroupBox gb) { string name = "txt"; for (int i = 0; i ; i++) { TextBox txt = new TextBox(); txt.Name =gb.Name+ ...
            for (int i = 0; i < 5; i++)
                {
                    Control.Refueller r1 = new Control.Refueller();
                    r1.sidePanel1.Click += new EventHandler(r1click);
                    r1.Name = "jy"+i;
                    r1.Size = new Size(220, 281);
                    //r1.ResetText = "123123123123";
                    //设置上和左位置
                    //groubox.Top = 50;
                    //groubox.Left = 50;
                    //通过坐标设置位置
                    r1.Location = new Point(220*i, 0);
                    r1.Show();
                    panel1.Controls.Add(r1);
                    
    
                }
    
    
            private void r1click(object sender, EventArgs e)
            {
                MessageBox.Show(this.Name);
    
            }
    
            //添加控件
            public void AddGroupBox()
            {
                string name = "gbox";
                for (int i = 0; i < 3; i++)
                {
                    GroupBox gbox = new GroupBox();
                    gbox.Name = name + i;
                    gbox.Text=name+i;
                    gbox.Width = 300;
                    gbox.Height = 100;
                    gbox.Location = new Point(32, 20 + i * 150);
                    this.Controls.Add(gbox);
                    //调用添加文本控件的方法
                    AddTxt(gbox);
                }
            }
            //添加文本控件
            public void AddTxt(GroupBox gb)
            {
                string name = "txt";
                for (int i = 0; i < 3; i++)
                {
                    TextBox txt = new TextBox();
                    txt.Name =gb.Name+ name + i;
                    txt.Text =gb.Name+"|"+ name + i;
                    txt.Location = new Point(12, 15 + i * 30);
                    gb.Controls.Add(txt);
                }
            }

    找到评论

    public void AutoPage()
            {
                int a = 0;
                int pNum = 160 / 10 + 1;
                ViewState["pNum"] = pNum;
                int n = 0;
                for (int i = 0; i < pNum; i++)
                {
                    Panel panel = new Panel();
                    panel.Visible = false;
                    panels[i + 1] = panel;
                    for (int j = 0; j < 10; j++)
                    {
                        n++;
                        Command cmd = new Command();
                        cmd.Text = "选 择";
                        cmd.BreakAfter = false;
                        panel.Controls.Add(cmd);
                        cmds[n] = cmd;
                        //--------------
                        cmds[n].Click += new EventHandler(cmd_click);
                        cmds[n].CommandName = n.ToString();
                        TextBox txt = new TextBox();
                        txt.Text = a.ToString() + " - This sentence repeats over and over.";
                        //----------
                        cmds[n].Tag = txt;
                        a++;
                        panel.Controls.Add(txt);
    
                    }
                    this.Form1.Controls.Add(panel);
                    panel.Visible = false;
                }
            }
    
            void cmd_click(object sender, EventArgs e)
            {
                (((Command)sender).Tag as TextBox).Text = ((Command)sender).CommandName;
            }

     

    展开全文
  • 现在有这么一个需求,需要动态添加自定义控件到界面,自定义控件数量不固定,内容是通过服务获取的,以前是做winform的,winform简单,直接 new自定义控件添加上去就行,现在wpfmvvm模式,不知道怎么做了,能否在...

    现在有这么一个需求,需要动态添加自定义控件到界面,自定义控件数量不固定,内容是通过服务获取的,以前是做winform的,winform简单,直接 new自定义控件添加上去就行,现在wpf mvvm模式,不知道怎么做了,能否在viewmodel中添加一个 observablecollection,界面绑定这个属性,界面自动生成这么多个自定义控件?如果可以,各位大佬能否提供下实现思路,有个demo什 么的最好了。


    <Window x:Class="WpfApplication5.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <!--控件模板-->
            <DataTemplate x:Key="UserDataTemplate">
              
                <Border BorderThickness="2" BorderBrush="Black" Margin="2">
                    <StackPanel>
                        <Image />
                        <Label HorizontalAlignment="Center" Content="{Binding Path=Name}" />
                    </StackPanel>
                </Border>
            </DataTemplate>
        </Window.Resources>
        <Grid Name="mygrid">
            <!--容器-->
            <ItemsControl x:Name="testList" ItemTemplate="{StaticResource UserDataTemplate}" ItemsSource="{Binding Btns}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <VirtualizingStackPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>
        </Grid>
    </Window>


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;

    namespace WpfApplication5
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
           public MainWindowViewModel user { get; set; }
            public MainWindow()
            {
                InitializeComponent();
                user = new MainWindowViewModel();
                mygrid.DataContext = user;//指定ViewModel
            }

        }
    }


    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.ComponentModel;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Controls;

    namespace WpfApplication5
    {
        public class MainWindowViewModel : INotifyPropertyChanged
        {
            public event PropertyChangedEventHandler PropertyChanged;
            public MainWindowViewModel()
            {
                Btns = new ObservableCollection<Item>() { new Item(){Name = "测试1"}, new Item(){Name = "测试2"} };
            }


            private ObservableCollection<Item> btns;

            public ObservableCollection<Item> Btns
            {
                get { return btns; }
                set { btns = value; }
            }
        }  
    }


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace WpfApplication5
    {
        public class Item : INotifyPropertyChanged
        {
            public event PropertyChangedEventHandler PropertyChanged;

            private string _name;
            public string Name
            {
                get { return _name; }
                set
                {
                    _name = value;
                    if (PropertyChanged != null)
                    {
                        PropertyChanged(this, new PropertyChangedEventArgs("Name"));
                    }
                }
            }
        }
    }

    <Window x:Class="WpfApp1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local ="clr-namespace:WpfApp1"
            Title="MainWindow" Height="450" Width="800">
      <Window.Resources>
        <DataTemplate DataType="{x:Type local:MyContract}"> <!-- 类型是MyContract的,用这个模板 -->
          <StackPanel Width="128" Height="150" Margin="20">
            <Image Source="{Binding ImageUrl}" />
            <TextBlock Text="{Binding Name}" />
          </StackPanel>
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:MyCard}"><!-- 类型是MyCard的,用这个模板 -->
          <Grid Width="128" Height="150" Margin="20" Background="{Binding Color}">
            <TextBlock Text="{Binding Color}" FontSize="24" VerticalAlignment="Center" />
          </Grid>
        </DataTemplate>
      </Window.Resources>
      <Grid>
        <ItemsControl ItemsSource="{Binding Items}" > <!-- 不直接指定模板,而是用数据类型来决定 -->
          <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate><WrapPanel IsItemsHost="True" /></ItemsPanelTemplate>
          </ItemsControl.ItemsPanel>
        </ItemsControl>
      </Grid>
    </Window>

    using System.Collections.ObjectModel;
    using System.Windows;
    namespace WpfApp1
    {
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                Items = new ObservableCollection<object>()
                {
                    new MyContract(){ Name = "杀马特丶蛮牛", ImageUrl = "https://profile.csdnimg.cn/A/3/4/1_zhengbingfe"},
                    new MyContract(){ Name = "正怒月神", ImageUrl = "https://profile.csdnimg.cn/F/F/E/1_hanjun0612"},
                    new MyContract(){ Name = "OrdinaryCoder", ImageUrl = "https://profile.csdnimg.cn/6/0/9/1_weixin_40440974"},
                    new MyCard() { Color = "PeachPuff"},
                    new MyCard() { Color = "SeaShell"},
                    new MyCard() { Color = "SteelBlue"},
                };
                this.DataContext = this;
            }
            public ObservableCollection<object> Items { get; }
        }
        public class MyContract // 可自行实现INotifyPropertyChanged接口
        {
            public string Name { get; set; }
            public string ImageUrl { get; set; }
        }
        public class MyCard
        {
            public string Color { get; set; }
        }
    }

     

    另外,数据模板的强处,在于它可以利用数据类型,来决定具体的展示模板。还小蜜蜂论坛发帖机可以这么用

    展开全文
  • c#动态添加自定义控件方法

    千次阅读 2019-01-07 09:37:18
    在实际的WinForm及Win CE的项目开发过程中,常常会遇上一些个性化的模型展示,今天给大家演示... 创建一个WinForm窗体应用程序项目,命名为“动态添加项目”,并添加一个自定义控件,具体如下图所示。 ...

     

    在实际的WinForm及Win CE的项目开发过程中,常常会遇上一些个性化的模型展示,今天给大家演示如何创建自定义控件,及动态调用展示。

    工具/原料

    • visual studio 2008 or visual studio 2010 2013等

    方法/步骤

    1. 创建一个WinForm窗体应用程序项目,命名为“动态添加项目”,并添加一个自定义控件,具体如下图所示。

      c#动态添加自定义控件方法

    2. 打开刚刚生成的自定义控件窗体,添加三个label与linklabel,从工具箱里面拉拽,如下图所示,注意控件大小设置。

      c#动态添加自定义控件方法

    3. 下面是方法的生成了,可以根据自己的需要添加对应的方法,下面展示一个label的值展示,添加一个窗体加载事件,制定一个控件赋值方法。

      c#动态添加自定义控件方法

    4. 添加一个测试用的FORM窗体,加上一个按钮当做触发按钮,用于控制动态控件加载,如下图所示。

      c#动态添加自定义控件方法

    5. 添加一个5个动态控件生成的事件,加载在button按钮的事件下面,具体代码如下图所示。

      c#动态添加自定义控件方法

    6. 运行编译调试程序,正确后,点击按钮得到想要的结果,如下图,效果呈现。

      c#动态添加自定义控件方法步骤阅读

       

    展开全文
  • 添加mschart.dll动态链接库 添加引用 System.Windows.Forms.DataVisualization MSChart控件作为方便的用户数据展示控件,可以方便的使用控件提供的形状和展示形式展示数据,早Web应用...又是动态自定义添加,...

    添加mschart.dll动态链接库
    添加引用
    System.Windows.Forms.DataVisualization
     
     

     MSChart控件作为方便的用户数据展示控件,可以方便的使用控件提供的形状和展示形式展示数据,早Web应用中用的比较多,这几天一直在做一个基于Winform的CS结构的演示程序,用到了MSChart,由于一直也不太熟悉MSChart,又是动态自定义添加,所以一点一点的摸索着做起来,动态添加自定义的MSChart到WinForm程序中,上代码:

    1、创建一条曲线形式的Chart

    System.Windows.Forms.DataVisualization.Charting.Chart chart1 = new System.Windows.Forms.DataVisualization.Charting.Chart();

    //定义一个chart
     System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();

    //定义一个绘图区域
     System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();

    //定义一个数据列
     chartArea1.Name = "ChartArea1";

    //其实没有必要,可以使用chart1。ChartAreas[0]就可以了
     chart1.ChartAreas.Add(chartArea1);

    //完成Chart和chartArea的关联
     //System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
     //legend1.Name = "图标";
     //chart1.Legends.Add(legend1);
     chart1.Name = "chart1";
     series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;

    //设置线性
     Random rd = new Random();
     double[] num = new double[20];

     for (int i = 0; i < 20; i++)
     {
     int valuey = rd.Next(20, 100);
     DataPoint point = new DataPoint((i + 1), valuey);
     series1.Points.Add(point);
     }

    //产生点的坐标
     //chart1.Titles[0].Text = "";
     
     series1.ChartArea = "ChartArea1";
     chartArea1.AxisX.Title = "日期";
     chartArea1.AxisY.Title = "值";
     chartArea1.AxisX.Interval = 1;
     chartArea1.AxisY.Interval = 5;
     chartArea1.AxisY.Minimum = 20;
     series1.Legend = "图标";
     series1.Name = "Series1";
     chart1.Text = "测试";
     chart1.Size = new System.Drawing.Size(700, 500);
     //chart1.Location = new System.Drawing.Point(50,120);
     series1.Color = Color.Blue;
     chart1.Text = "ceshi";
     //chart1.Titles[0].Text = "fff";
     chart1.Series.Add(series1);
     //这一句很重要,缺少的话绘图区域将显示空白
     //chart1.SizeChanged += new System.EventHandler(DoSizeChanged);
     //chart1.AllowDrop = true;
     chart1.BackColor = Color.FromArgb(243, 223, 193);

    //设置chart背景颜色
     chartArea1.BackColor = Color.FromArgb(243, 223, 193);

    //设置c绘图区域背景颜色
     series1.BorderWidth = 2;
     series1.IsValueShownAsLabel = true;

    //是否显示Y的值

     //this.groupBox9.Controls.Add(chart1);
     this.panel21.Controls.Add(chart1);
     chart1.Visible = true;
     //this.label10.Visible = true;
     //this.label10.Text = "【" + tn.Name + "】图";
     chart1.Titles.Add("【" + tn.Name + "】图");
     //为Chart1添加标题
     chartArea1.AxisX.IsMarginVisible = true;

    //是否显示X轴两端的空白

    2、在上述chart的基础上添加一条线

    Control[] controls = this.groupBox9.Controls.Find("chart1",true);

    //找到已经有的Chart1
     System.Windows.Forms.DataVisualization.Charting.Chart ch = (System.Windows.Forms.DataVisualization.Charting.Chart)controls[0];
     System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();

    //新定义一个数据项
     Random rd=new Random();
     for (int i = 0; i < ch.Series[0].Points.Count; i++)
     {
     int valuey=rd.Next(20,100);
     DataPoint point = new DataPoint((i + 1), valuey);
     series2.Points.Add(point);
     }
     series2.Color = Color.FromArgb(rd.Next(100, 255), rd.Next(0, 150), rd.Next(0, 255));
     series2.BorderWidth = 2;
     series2.ChartType = ((System.Windows.Forms.DataVisualization.Charting.Chart)this.panel21.Controls[0]).Series[0].ChartType;

    //定义线性和原有的线条形状一致
     series2.IsValueShownAsLabel = true;
     ch.Series.Add(series2);

    //添加数据列

    3、减少一条曲线

    Control[] controls = this.groupBox9.Controls.Find("chart1", true);
     System.Windows.Forms.DataVisualization.Charting.Chart ch = (System.Windows.Forms.DataVisualization.Charting.Chart)controls[0];
     if (ch.Series.Count>1)
     {
     //MessageBox.Show(this, "去掉一条线!", "信息提示");
     int i = ch.Series.Count - 1;
     while (i>1)
     {
     if (ch.Series[i].Points.Count>0)
     {
     break;
     }
     i -=1;
     }

     ch.Series[i].Points.Clear();
     this.toolStripStatusLabel2.Text = "减少对比曲线完成!";
     }
     else
     {
     MessageBox.Show(this, "绘图区域至少要有一条线!", "信息提示");
     
     }

    效果图:


    转载于:https://www.cnblogs.com/qiuzhongyang/p/3874006.html

    展开全文
  • 通过自定义控件库来动态的向Winform窗体中添加用户控件
  • 1、默认下拉菜单控件可编辑选中的内容 2、设置不可编辑后,控件会有一个...3、设置不可编辑后,下拉控件动态添加的值,会显示空白的情况 此源码就是解决以上问题 1、简单几行代码,即可设置下拉控件的背景和文字颜色
  • 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件。 使用方法:在项目上右键、添加、用户控件,之后用户控件的编辑与普通容器控件类似。如果要在后台往窗体中添加,  将其...
  • 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件。 使用方法:在项目上右键、添加、用户控件,之后用户控件的编辑与普通容器控件类似。如果要在后台往窗体中添加,  将其...
  • 准备:创建一个自定义控件,添加一个Panel对象。 优点: 支持多种数据源做绑定,并可以自己添加自定义数据源。 缺点:错误的抛出没有做到位,没有完全做到设计时定义所有数据。原因:懒。 usingSystem; ...
  • 控件自定义控件,高度为50,依次添加,测试数量达到500多的时候,就不能再添加了。 也不显示错误,运行没问题,就是达到极限后界面不显示了。 头一次遇到这个现象。 生成一个控件前,需要读取数据库,多表...
  • 但在VS .NET2005中,自带的TabControl控件,其选项卡上是默认没有添加关闭Tab选项卡的按钮,故要实现类似浏览器添加关闭标签页的功能,只能通过手动写代码进行实现。 为避免今后需要再次复用时需要重新写过的麻烦,...
  • 动态添加了10个控件,如下:其中RandomSquare.Square是自定义控件, RandomSquare.Square[] ns = new RandomSquare.Square[1000]; ns[0] = new RandomSquare.Square(); ns[0].Parent = tabPage_Database; ns[0]....
  • 在写winform的时候遇到一些需求,需要根据数据库的查询结果动态创建控件。这里以Label控件为例进行演示: Label a = new Label();//动态创建 a.Name = n.ToString();//为动态生成的控件更改属性 a.ForeColor = Color...
  • winform下实现的一个动态无限级的自定义添加SQLwhere条件的控件,显示外观是树状列表,只要你给这控件设置好哪几个字段可以用来拼where,那么运行起来后你可以动态的无限级的添加子and/or等等条件拼接,可以支持生成...
  • WebBrowser 类使用户可以在窗体中导航网页,它是一个...所以这里采用WPF加载Winform自定义WebBrower控件的方式,实现一个简单的加载网页并动态缩放的效果。 实现的效果如下: 1、首先添加System.Windows.Fo...
  • 更加好用的方法: 1.添加一个GridControl控件,PopupMenu控件(可能会自动添加一个BarManager控件,不用理) ...2.点击PopupMenu控件右上角,再点击“Customize”,添加自定义按钮“发送信息”,图片可以在...
  • 参考文献:《winform制作的精美时钟》https://www.cnblogs.com/gdjlc/archive/2013/03/08/2950297.html 效果图: 程序比较简单,只是...②向【用户控件】中添加自定义的一些行为代码(控制此控件的样式和行为...
  • WinForm用户窗体

    2017-05-04 22:44:00
    相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件。 使用方法:在项目上右键、添加、用户控件,之后用户控件的编辑与普通容器控件类似。如果要在后台往窗体中添加,  将其...
  • 最近在做一个winform项目,其中一个panel内的全部控件都是动态添加到页面中的,并且这些动态的控件需要做添加、删除等的功能,考虑到界面的美观,在每添加或删除时都要重新加载所有动态控件,但是,有一个问题就是...
  • Chart 实例

    千次阅读 2016-03-09 16:48:50
    可以方便的使用控件提供的形状和展示形式展示数据,早Web应用中用的比较多,这几天一直在做一个基于Winform的CS结构的演示程序,用到了MSChart,由于一直也不太熟悉MSChart,又是动态自定义添加,所以一点一点的摸索...
  • 5.23.2 定制自定义控件的3种常见方法 260 5.24 Visual C++ 2010 SysLink控件简介与开发 260 5.25 Visual C++ 2010 Split Button控件简介与开发 261 5.26 Visual C++ 2010 Network Address控件简介与开发 262 5.27 ...
  • 5.23.2 定制自定义控件的3种常见方法 260 5.24 Visual C++ 2010 SysLink控件简介与开发 260 5.25 Visual C++ 2010 Split Button控件简介与开发 261 5.26 Visual C++ 2010 Network Address控件简介与开发 262 5.27 ...
  • 5.23.2 定制自定义控件的3种常见方法 260 5.24 Visual C++ 2010 SysLink控件简介与开发 260 5.25 Visual C++ 2010 Split Button控件简介与开发 261 5.26 Visual C++ 2010 Network Address控件简介与开发 262 5.27 ...
  • 主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和...控件自定义用户控件、文件基本操作、文件夹基本操作、文件流操作、加密、解密及解压缩文件、C#与Word互操作、高效应用Excel、基本图形绘制...
  • 主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和...控件自定义用户控件、文件基本操作、文件夹基本操作、文件流操作、加密、解密及解压缩文件、C#与Word互操作、高效应用Excel、基本图形绘制...
  • 实例237 为RichTextBox控件添加自定义滚动条 实例238 在RichTextBox控件中实现关键字描红 实例239 在RichTextBox控件中替换文本文字 实例240 在RichTextBox控件中实现项目符号功能 实例241 设置RichTextBox控件...
  • 实例237 为RichTextBox控件添加自定义滚动条 实例238 在RichTextBox控件中实现关键字描红 实例239 在RichTextBox控件中替换文本文字 实例240 在RichTextBox控件中实现项目符号功能 实例241 设置RichTextBox控件...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

winform动态添加自定义控件