组合框项目不可见

Posted

技术标签:

【中文标题】组合框项目不可见【英文标题】:Combo Box Items are not Visible 【发布时间】:2013-04-27 11:46:43 【问题描述】:

我写了下面的代码来在 ComboBox 中查看我的分数,我把这一切都写在populate() 方法中,我称之为表单加载,但它显示了空的组合框。请告诉我这段代码有什么问题。

我为 DatabaseConnection 创建了一个单独的类。

public void populate()
    
        DatabaseConnection connection = new DatabaseConnection();
        OleDbCommand cmd = new OleDbCommand("Select score from Info", connection.Connection());
        connection.Connection().Open();
        OleDbDataReader reader = cmd.ExecuteReader();

        while (reader.Read())
        

            comboBox1.Items.Add(reader[0].ToString());

        
        connection.Connection().Close();


    

【问题讨论】:

没有错,Info表里有记录吗?您确定连接到正确的数据库吗? 是的,我已连接到正确的数据库,插入和选择命令工作正常,但这个没有显示任何结果。 好吧,那么我将尝试了解问题出在 OleDbDataReader 循环还是在 combobox.Items.Add 中。使用调试器,您可以在进入循环之前放置一个断点,并逐行检查从数据库中返回的内容(如果有的话) 【参考方案1】:

当代码尝试在 OleDbConnection 打开之前创建 OleDbCommand 对象时,我看到了类似的问题。尝试先创建connection.Connection().Open();,然后创建cmd 对象。

编辑

以下是适合我的确切代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace comboTest

    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();
        

        private void Form1_Load(object sender, EventArgs e)
        
            var con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\kirmani\Documents\Score.accdb");
            con.Open();
            var cmd = new OleDbCommand("SELECT Score FROM Info", con);
            OleDbDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            
                comboBox1.Items.Add(rdr[0].ToString());
            
            con.Close();
        
    

【讨论】:

它仍然没有给出任何输出 @TahaKirmani 我已经用适合我的确切代码编辑了我的答案。【参考方案2】:

在填充命令之前,您应该始终打开连接。 还可以使用 try catch 语句来防止任何未处理的 SQL 异常。 试试这个方法:

    public void populate()
    
       DatabaseConnection connection = new DatabaseConnection();
       try
       connection.Connection().Open();
       OleDbCommand cmd = new OleDbCommand;
       cmd.Connection = connection.Connection();
       cmd.ComandText = "Select score from Info"
       OleDbDataReader reader = cmd.ExecuteReader();

           while (reader.Read())
              
                comboBox1.Items.Add(reader[0].ToString());
           
        
       catch(SqlException e)



      
      finaly
        connection.Connection().Close();
      



【讨论】:

请在您的回答中添加解释。

以上是关于组合框项目不可见的主要内容,如果未能解决你的问题,请参考以下文章

XAML:在组合框项目突出显示上显示按钮

如果选择了某些组合框项,则使文本块可见-MVVM

选择项目后,边框未显示在 Flex 可搜索组合框中

根据组合框选择切换表单上其他字段的可见性 - MS Access

如何在 Access 2007 中设置第一个连续组合框不可见?

发布版本中的 Qt 不可见组合框(但不在调试版本中)