当前位置: 首页 > 知识库问答 >
问题:

从C中的组合框项设置typeof值#

娄建义
2023-03-14

我是C#的新手,我正在通过不连接到外部数据库的编码来制作一个简单的表。我有一个组合框(下拉列表),这样用户可以从下拉列表项中选择列的数据类型,然后将所选项设置为列的数据。我需要此行中的选定项目:

            customer.Columns.Add(cn , typeof(long));

这是我的全班同学:

 namespace HomeWork1
 {
 public partial class Form1 : Form
 {
    public String tn;
    public String cn;
    DataTable customer;
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        comboBox1.Items.Add("Boolean");
        comboBox1.Items.Add("Byte");
        comboBox1.Items.Add("Char");
        comboBox1.Items.Add("DateTime");
        comboBox1.Items.Add("Decimal");
        comboBox1.Items.Add("Double");
        comboBox1.Items.Add("Int16");
        comboBox1.Items.Add("Int32");
        comboBox1.Items.Add("Int64");
        comboBox1.Items.Add("String");
    }

    private void button1_Click(object sender, EventArgs e)
    {
        tn = txtTableName.Text;

        customer = new DataTable(tn);
    }

    private void button2_Click(object sender, EventArgs e)
    {
        cn = txtColumnName.Text;
        customer.Columns.Add(cn , typeof(long));
        dataGridView1.DataSource = customer;
    }
 }
 }

共有1个答案

谯德元
2023-03-14

C# 区分大小写。combobox1 和 comboBox1 是不一样的。由于您的组合框被命名为 comboBox1,大写字母为“B”,因此请这样写:

customer.Columns.Add(cn ,
    Type.GetType("System." + (string)comboBox1.SelectedItem));
'                                         ^ upper case "B"

您可以有两个仅在大写/小写上不同的变量:

int x = 1;
int X = 100;

这真的是两个不同的变量!

注意:有不同的方法可以获取Type对象:

>

  • 从作为标识符给定的类型名称

     Type t = typeof(int); // typeof(int) is known at compile time.
    

    从对象

     Type t = someObject.GetType(); // Known only at runtime.
    

    从以字符串形式给出的类型名称

     string s = "System.Int32";
     Type t = Type.GetType(s);
    

    注意:GetType()是所有类型都从System.Object继承的方法。

    因为组合框中有类型名称字符串,所以使用第三个版本。

    Type t = Type.GetType("System." + (string)comboBox1.SelectedItem);
    customer.Columns.Add(cn , t);
    

    或者直接将<code>Type</code>对象添加到组合框中,而不是字符串:

    comboBox1.Items.Add(typeof(bool));
    comboBox1.Items.Add(typeof(byte));
    

    然后简单地用

    Type t = (Type)comboBox1.SelectedItem;
    customer.Columns.Add(cn , t);
    

  •  类似资料:
    • 我正在我的 WPF 应用程序中使用 ComboBox 并遵循 MVVM。有一个字符串列表,我想在我的组合框中显示。 XAML: 查看模型: 现在这段代码运行得非常好。我可以从视图中选择,我可以在视图模型中获得更改,如果我从视图模型中更改SelectedItem,我可以在视图中看到它。 这就是我想要达到的目标。当我从我的视图中更改选定的项目时,我需要检查值是好/坏(或任何东西)设置选定的项目,否则不

    • 我有两个组合框。我正在填充这样的两个组合框。组合框1和2的名称是cmbpartyName和cmbprefPT2。 在这里,我从combox1中选择一个值,在它所选的索引更改事件中,如下所示。 由于两个组合框具有相同的值,如何从第二个组合框cmbPrefPT2中删除第一个组合框的选定值?

    • 我已经实现了,这样我的船舶列表就会根据国家和船舶类型进行更改,但问题是我无法选择任何船舶。 你知道我哪里出了问题吗? 上面是Controller类中的。 上面是视图类中的setter。

    • 我的表单上有2个组合框(在表单加载事件中)。第一个组合框在表单加载后从选择语句中获取一个值。我想在我的第二个组合框中使用该值。这是我的代码: 1st组合框= cbDelivery 2de组合框= cbOrderNo 此组合框位于: private void CB delivery _ selectedindex changed(对象发送方,事件参数e) 因此,一旦我从1ste组合框中选择一个值,我

    • 日安, 我希望我的组合框选择其中的第一个项目。我正在使用C#和WPF。我从DataSet读取数据。要填充组合框: 组合框XAML代码: 如果我尝试: 它不起作用。

    • 我想在 WPF 中创建一个顶部有一个项的组合框,当它被选中时,选定项应设置为 null(重置为默认状态)。我一直在寻找,但没有找到令人满意的解决方案。 如果可能的话,我希望它只使用XAML代码或附加的行为来实现,因为我不太喜欢更改视图的ViewModel中的内容,或者重写标准控件。 这是我到目前为止想出的(缩短代码): 我认为最好的方法是以某种方式添加一个事件触发器,当项目被选中时,该触发器将设置