1

私はC#が初めてで、以下のコードはコンボボックスの値を選択していないようです:

private void button1_Click(object sender, EventArgs e)
{

   cbPortNumber.SelectedValue = 3;

また

   cbPortNumber.setValue("3");

また

   cbPortNumber.SelectedIndex = cbPortNumber.FindString("3");

また

   cbPortNumber.SelectedIndex = cbPortNumber.Items.IndexOf(cbPortNumber.Items.FindByValue("HDMI 4"));

}

ドロップダウンは次のようになります。 ここに画像の説明を入力

上記のすべてのコードは、リストで HDMI 4 を選択していないようです...エラーはありませんが、選択されていません。

どんな助けでも素晴らしいでしょう!

コンボボックスを表示する更新 ここに画像の説明を入力

更新 2

    // 
    // cbPortNumber
    // 
    this.cbPortNumber.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Append;
    this.cbPortNumber.Enabled = false;
    this.cbPortNumber.FormattingEnabled = true;
    this.cbPortNumber.Location = new System.Drawing.Point(174, 40);
    this.cbPortNumber.Name = "cbPortNumber";
    this.cbPortNumber.Size = new System.Drawing.Size(133, 21);
    this.cbPortNumber.TabIndex = 11;
    this.cbPortNumber.Text = "global_hdmi_port";
    this.helpPortNumber.SetToolTip(this.cbPortNumber, "The HDMI port number, to which you connected your USB-CEC adapter.");
    this.cbPortNumber.SelectedIndexChanged += new System.EventHandler(this.cbPortNumber_SelectedIndexChanged);

#region Global settings
public CECSettingByte HDMIPort
{
  get
  {
    if (!_settings.ContainsKey(KeyHDMIPort))
    {
      CECSettingByte setting = new CECSettingByte(KeyHDMIPort, "HDMI port", 1, _changedHandler) { LowerLimit = 1, UpperLimit = 15, EnableSetting = EnableHDMIPortSetting };
      setting.Format += delegate(object sender, ListControlConvertEventArgs args)
      {
        ushort tmp;
        if (ushort.TryParse((string)args.Value, out tmp))
          args.Value = "HDMI " + args.Value;
      };

      Load(setting);
      _settings[KeyHDMIPort] = setting;
    }
    return _settings[KeyHDMIPort].AsSettingByte;
  }
}

アップデート 3

そして、これはそのドロップダウンで何かを選択した後にアクションを起動するものです:

private void OnSettingChanged(CECSetting setting, object oldValue, object newValue)
{
  if (setting.KeyName == CECSettings.KeyHDMIPort)
  {
    CECSettingByte byteSetting = setting as CECSettingByte;
    if (byteSetting != null)
    {
      if (!Settings.OverridePhysicalAddress.Value)
        Config.HDMIPort = byteSetting.Value;
      CECActions.SetConnectedDevice(Settings.ConnectedDevice.Value, byteSetting.Value);
    }
  }
4

1 に答える 1

1

したがって、このコードは私にとってはうまく機能しています:

private void button1_Click(object sender, EventArgs e)
{
    comboBox1.SelectedIndex = 2;
}

アクセスする項目がない場合は、ItemSource にアクセスできません。簡単な方法は、Desinger でアイテムを初期化することです

ここに画像の説明を入力

(ローカライズされていないIDEには申し訳ありません)プロパティSelectedIndexを存在するインデックスに設定できます。もう 1 つの方法は、関数を使用してすべての HDMI 項目を追加するCombobox1.Items.Addことです。

VB で Forms を使用したことがある場合...それでも同じです

public Form1()
{
    InitializeComponent();

    var hdmi = "HDMI";

    for (int i = 1; i < 15; i++)
    {
        comboBox1.Items.Add( hdmi + i);
    }
}

private void button1_Click(object sender, EventArgs e)
{
    if (comboBox1.Items.Count >= 2)
        comboBox1.SelectedIndex = 2;
}
于 2013-05-11T00:46:10.007 に答える