组合框选定索引属性.net c#

本文关键字:属性 net 索引 组合 | 更新日期: 2023-09-27 18:16:12

我正在玩弄BASS . net,我很难弄清楚如何让我的项目中的组合框在SelectedIndexChanged事件发生时返回一个整数。也许我遗漏了一些东西,或者我的代码的某些部分是不可访问的。

我的基本目标是根据所选择的驱动程序类型填充驱动程序名称的列表框。

不管怎样,我一整天都在那里,不知道发生了什么事。如有任何建议,不胜感激

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;
//BASS references
using Un4seen.Bass;
using Un4seen.BassAsio;
using Un4seen.Bass.AddOn.Midi;
namespace VibeCraft
{
    public partial class vcSettings : Form
{
    BASS_DEVICEINFO dvInfo;
    public vcSettings()
    {
        InitializeComponent();
    }
    public void SetDriverType()
    {
        int driverList = Bass.BASS_GetDeviceCount();
        switch (cmbDrvType.SelectedIndex)
            {
                    //Clear Names when No sound is selected
                case 0:
                    for (int i = driverList; i >= 0; i--)
                    {
                        lstDriverList.Items.Remove(driverList);
                    }
                    break;
                    //get Device names for DirecX Driver type
                case 1:
                    for (int i = driverList; i < Bass.BASS_GetDeviceCount(); i++)
                    {
                        dvInfo = Bass.BASS_GetDeviceInfo(i);
                        Bass.BASS_GetDeviceInfo(i, dvInfo);
                        lstDriverList.Items.Add(dvInfo.name);
                    }
                    break;
                    //Get Device names for ASIO Driver type
                case 2:
                    //TODO:
                    //logic for populating the ASIO driver list.
                    break;
                default:
                    cmbDrvType.SelectedIndex = 1;
                    break;
            }
        }
        private void cmbDrvType_SelectedIndexChanged(object sender, EventArgs e)
        {
            SetDriverType();
        }
    }
}

谢谢你的支持,我知道我错在哪里了,在for循环中,我增加了我的索引,我开始的值等于哨兵值。driverList的值已经在3,所以它不是递增的,因为这是我比较它反对。这是我更新的代码。

    public void SetDriverType(int selectedType)
    {
        int driverList = Bass.BASS_GetDeviceCount();
        switch (selectedType)
        {
                //Clear Names when No sound is selected
            case 0:
                for (int i = driverList; i >= 0; i--)
                {
                    lstDriverList.Items.Remove(driverList);
                }
                break;
                //get Device names for DirecX Driver type
            case 1:
                for (int i = 0; i < Bass.BASS_GetDeviceCount(); i++)
                {
                    dvInfo = Bass.BASS_GetDeviceInfo(i);
                    //Bass.BASS_GetDeviceInfo(i, dvInfo);
                    lstDriverList.Items.Add(dvInfo.name);
                }
                break;
                //Get Device names for ASIO Driver type
            case 2:
                //TODO:
                //logic for populating the ASIO driver list.
                break;
        }

组合框选定索引属性.net c#

我认为最好使用IndexChange内部的int变量来检索索引值,然后将其传递给您的SetDriverType()方法。试一下,让我知道它是如何工作的。

private void cmbDrvType_SelectedIndexChanged(object sender, EventArgs e)
{
     SetDriverType((int)cmbDrvType.SelectedIndex);
}