首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Combox控件加载内容方法解决方案

2012-04-05 
Combox控件加载内容方法form1中有combox1控件,其加载内容为combox1.Items.Add(C#)combox1.Items.Add(C

Combox控件加载内容方法
form1中有combox1控件,其加载内容为
combox1.Items.Add("C#");
combox1.Items.Add("C++");
form2中有combox2控件,需要加载的内容和combox1的一样
我的做法是和form1中一样,写下面2句进行加载
combox2.Items.Add("C#");
combox2.Items.Add("C++");
如果有很多窗体都用到该类控件的相同内容,这样写太麻烦了
求该问题的简单方法

[解决办法]
写个公共的方法
[解决办法]

我想可以写个方法

C# code
        public static void AddElement(ComboBox c)        {            c.Items.Add("C++");            c.Items.Add("C#");        }
[解决办法]
/// <summary>
/// 复制一个ComboBox的所有下拉列表给另一个。
/// </summary>
/// <param name="sourceComboBox"></param>
/// <param name="targetComboBox"></param>
public void CopyComboBoxToAnother(ComboBox sourceComboBox, ComboBox targetComboBox)
{
if (sourceComboBox == null || targetComboBox == null)
return;

targetComboBox.Items.Clear();

foreach (object item in sourceComboBox.Items)
{
targetComboBox.Items.Add(item);
}
}
[解决办法]
你public一个 string str="C#,C++";

然后引用上面的 str 对他进行拆分 然后for循环在复制给combox1.Items.Add(str[i]);
这个是针对str字符串变化(str="C#,C++,js";) 这样就不用全部改了。





[解决办法]
C# code
public static void AddElement(ComboBox c)        {            string[] str__str = { "C#","C++"};            for (int i = 0; i < str__str.Count(); i++)            { c.Items.Add(str__str[i].ToString());}            //c.Items.Add("C++");            //c.Items.Add("C#");        }
[解决办法]
CopyComboBoxToAnother(comboBox1, comboBox2);

我试过可以把一个控件的选项复制给另一个。
[解决办法]
自己写个控件,里面的项绑定好这些数据,然后要用到的地方直接托你自己写的控件出来。
[解决办法]
用一个用户控件就Ok了,,那个界面要用直接拖到界面上
[解决办法]
对于经常用到的方法,就提取一个公共的方法放到一个工具类中。或者像上面提到的,做一个用户控件。我认为还是第一个方法好一些。写一个公共的方法,来绑定你所有窗体的combox。没个窗体只需要都调用这个方法就可以。参数可以是你需要绑定的combox。
[解决办法]
可以通过.net 3.5的扩展方法,给combox控件扩展一个绑定方法。以后再使用这个控件就方便了。
C# code
  public static void CodeBinding(this System.Web.UI.WebControls.DropDownList DropDownListControl, string CodeType)        {                     DropDownListControl.DataSource = ((List<SysCodeInfo>)HttpContext.Current.Cache["code_" + CodeType]);// codeService.GetCodeListByFlag(CodeType);            DropDownListControl.DataTextField = "name";            DropDownListControl.DataValueField = "Code";            DropDownListControl.DataBind();            DropDownListControl.Items.Insert(0, new System.Web.UI.WebControls.ListItem("请选择", ""));        }
[解决办法]
用wpf啊.binding.一句话:
双向绑定:
<TextBox Name="textBox1" Text="{Binding ElementName=TextBox2, Path=Text}"/>

textBox1的Text与TextBox2的Text同步绑定

改任何一方的值都会变另一方的值.
------解决方案--------------------


在同一个工程项目中的话可以这样写
[code=C#][/code]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
comboBox1.Items.Add("C#");
comboBox1.Items.Add("C++");

}

private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
ComboBox cb = new ComboBox();
Object[] objs = new Object[comboBox1.Items.Count];
comboBox1.Items.CopyTo(objs, 0);
cb.Items.AddRange(objs);
Label lb = new Label();
lb.Text = "Form1加给我的";
cb.Left = 100;
frm.Controls.Add(lb);
frm.Controls.Add(cb);
frm.Show();
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{
FormCollection frms = Application.OpenForms;
foreach (Form frm in frms)
{
if (frm.Name == "Form1")
{
ComboBox cb=null;
cb = frm.Controls.Find("comboBox1", true)[0] as ComboBox;
if (cb != null && cb.Items.Count>0)
{
Object[] objs = new Object[cb.Items.Count];
cb.Items.CopyTo(objs, 0);
this.comboBox1.Items.AddRange(objs);

}
break;
}
}
}
}
}
[解决办法]

C# code
 FORM1中public static  string[] com1 = new string[] { "C#","C++" }; comboBox1.Items.AddRange(com1);FORM2中 comboBox1.Items.AddRange(Form1.com1); 

热点排行