【问题标题】:C# program doesnt change combo box textC# 程序不会更改组合框文本
【发布时间】:2017-05-15 13:05:14
【问题描述】:

我告诉程序将组合框文本更改为我拥有的字符串,但它不会更改文本。 以下是部分代码:

int i = 0;
bool found = false;
do
{
    if (Globais.loc_txt[i] == (items[0] + " ") || Globais.loc_txt[i] == (items[0]))
    {
        cb_loc.Text = Globais.loc_txt[i]; // ele encontra bem, mas agora nao está a mudar o valor de text na cb
        break;
    }

    else { i++; }

} while (!found && i <= Globais.loc.Length);

无论如何,谢谢。

PS:cb_loc 是我的组合框的名称,而 Globais.loc_txt[i] 是一个字符串数组,它在 i 位置有一个字符串。

这是我的组合框设置或任何你称之为的设置。

【问题讨论】:

  • 您的 if 条件是否为真?要对其进行测试,请对其进行调试或添加 Debug.WriteLine("Got it");如果
  • 你试过调试了吗?
  • 是的,它运行代码来更改 cb_loc 值,但是当我看到它并没有真正改变文本时
  • 如果您找到的项目实际上已经在组合框中,为什么不直接选择它呢?它将更改文本....只需更改 selectedindex。
  • 天哪,它工作了,哈哈,不错@Trey

标签: c# string text combobox


【解决方案1】:

根据msdn

将 Text 属性设置为 null 或空字符串 ("") 会将 SelectedIndex 设置为 -1。将 Text 属性设置为 Items 集合中的值会将 SelectedIndex 设置为该项目的索引。 将 Text 属性设置为不在集合中的值会使 SelectedIndex 保持不变。

您正在设置组合框的文本。文本不是组合框中的项目吗? 如果是新字符串,则首先尝试将项目添加到集合中。

您的 if 逻辑似乎只是在比较字符串并用尾随空格检查它。 1,我假设两者都不在您的 combobox.items 中。 2, 你能把 Globais.loc_txt[i] 修剪一下吗

int i = 0;
bool found = false;
do
{
    string text = Globais.loc_txt[i].TrimEnd()
    if (text == item[0])
    {
        cb_loc.Text = text; // ele encontra bem, mas agora nao está a mudar o valor de text na cb
        break;
    }

    else { i++; }

} while (!found && i <= Globais.loc.Length);

【讨论】:

  • 如果它进入 if 语句中,这意味着它在数组中找到了对应的匹配项,这样我就在同一个地方:/
  • 你是说 ComboBox.Items 应该匹配 Globais.loc_txt[].
猜你喜欢
  • 2017-11-06
  • 2020-12-26
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多