C#中的combobox组件应该怎么用?

C#中的combobox组件应该怎么用?,第1张

//加入项

comboBox1.Items.Add("A")

comboBox1.Items.Add("B")

comboBox1.Items.Add("C")

//判断选择项

switch (comboBox1.SelectedItem.ToString())

{

case "A": MessageBox.Show("A")break

case "B": MessageBox.Show("B")break

case "B": MessageBox.Show("C")break

}

扩展资料:

C#中comboBox控件的一些基本用法小结

private void InitCombo()

{

dt.Columns.Add("Text")

dt.Columns.Add("Value")

DataRow dr1 = dt.NewRow()

DataRow dr2 = dt.NewRow()

DataRow dr3 = dt.NewRow()

dr1["Text"] = "0-明细计划"

dr1["Value"] = "0"

dr2["Text"] = "1-汇总计划"

dr2["Value"] = "1"

dr2["Text"] = "2-执行反馈"

dr2["Value"] = "2"

dt.Rows.Add(dr1)

dt.Rows.Add(dr2)

dt.Rows.Add(dr3)

this.comBoxCXLX.DataSource = dt

this.comBoxCXLX.DisplayMember = "Text"

this.comBoxCXLX.ValueMember = "Value"

}

上面代码可以实现将明细计划、汇总计划、执行反馈三个选项绑定到ComboBox的下拉框中。

假如说:该comboBox控件显示内容受别的控件限制,显示给comboBox空间赋值,实现代码如下:

//让combox控件显示“明细计划”

comBoxCXLX.Text = "明细计划"

comBoxCXLX.SelectedIndex = 0

//让combox控件显示“汇总计划”

comBoxCXLX.Text = "汇总计划"

comBoxCXLX.SelectedIndex = 1

  public static class RegisterOcx

    {

        private static string _systemDic = string.Empty

        /// 检测是32bit or 64bit,进行对应位置注册

        /// 注册成功之后启动Pad

        public static void RegisterOcxControl()

        {

            try

            {

                const string fileName = "dsoframer.ocx"

                bool type = Environment.Is64BitOperatingSystem

                 _systemDic = Environment.SystemDirectory

                if (type)

                {

                    //64bit

                    _systemDic = _systemDic.Replace("system32", "SysWOW64")

                }

                _systemDic = _systemDic + "\\" + fileName

                //是否存在

                if (!File.Exists(_systemDic))

                {

                    string libPath = AppDomain.CurrentDomain.BaseDirectory + "\\Libs\\" + fileName

                    File.Copy(libPath, _systemDic, true)

             

                }

                System.Threading.Thread thread = new System.Threading.Thread(DoRegistry)

                thread.SetApartmentState(System.Threading.ApartmentState.STA)

                thread.Start()

                

            }

            catch (Exception ex)

            {

                Logger.Error("RegisterOcxControl error" + ex.ToString())

                throw

            }

        }

 

        private static void DoRegistry()

        {

            try

            {

                //是否注册

                //{00460182-9E5E-11d5-B7C8-B8269041DD57}对应的是空间的注册表中ClSID的值,每一个OCX空间CLSID都不一样。

                //如果更换空间,则该值需要到注册表中查找,路径为:HKEY_CLASSES_ROOT\CLSID\{00460182-9E5E-11d5-B7C8-B8269041DD57}

                RegistryKey registry = Registry.ClassesRoot.OpenSubKey("CLSID\\{00460182-9E5E-11d5-B7C8-B8269041DD57}\\")

                if (registry == null)

                {//没有注册时

                    new Command().Execute(string.Format(@"Regsvr32.exe {0}", _systemDic))

                }

            }

            catch (Exception)

            {

                new Command().Execute(string.Format(@"Regsvr32.exe {0}", _systemDic))

            }

        }

    }

32bit 和 64bit的差别是 注册路径"system32"替换成 "SysWOW64"。

new Command().Execute是执行cmd命令,用其他的方式执行cmd都可以

命令是:Regsvr32.exe {0}   ,{0} 是注册的路径。

例如:

Regsvr32.exe "C:\Windows\SysWOW64\dsoframer.ocx" 

regsvr32 好像有个\s命令,可以静默注册。

引用这个Dll就行了。

C:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11904484.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存