日期:2014-05-18  浏览次数:20917 次

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同步绑定

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