草庐IT

关于c#:从另一个表单设置combobox selectedindex时出现问题

codeneng 2023-03-28 原文

Trouble setting combobox selectedindex from another form

我正在尝试根据用户在第一个表单 (form1) 上选择的索引在另一个表单 (form2) 上设置 selectedindex。

我正在使用此代码获取值,但它返回一个负数。

1
2
3
4
public int SelectedComboIndex
{
   get { return comboBox1.SelectedIndex; }
}

我正在尝试通过

设置组合框索引

1
comboBox1.SelectedIndex = form1.SelectedComboIndex;

谁能指出我正确的方向如何做到这一点?

编辑:更多代码用于调用 form1 上的代码

1
2
3
4
5
Form1 form1 = null;
public Form2(Form1 parentForm1) : this()
{
    form1 = parentForm1;
}

  • -1SelectedIndex 值表示未选择任何内容,您确定选择了某些内容吗? combBox1.SelectedIndex 的默认值为 -1
  • 这正是我得到的负数。我确定我选择了它,但只是试图将选择转移到 form2 上的另一个组合框
  • 在您设置属性 SelectedComboIndex 和使用它的位置发布您的 form1 和 form2 代码
  • 上面贴过。生病添加更多
  • 您能否显示调用此代码的方法:comboBox1.SelectedIndex = form1.SelectedComboIndex; ?
  • 如果我没有错,那么很有可能,SelectedComboIndex 正在获取 selectedindex,或者应该是,并且通过使用公共 Form2 部分,调用 form1.SelectedComboIndex


如果没有选择索引,组合框会返回负值(通常为 -1)。

所以我相信(我没有检查过)如果你为 SelectedIndex 属性设置了一个负值,你要做的就是清除组合框中的选择。

希望对您有所帮助。

  • 这只是重申了我上面已经提到的内容,它并不是真正的答案,只是 ComboBox 的工作原理


最佳实践是通常在表单的 Load 方法中保留任何类型的 UI 更改,这样表单就有机会正确初始化,并且在您实际进行更改之前设置所有绑定。构造函数只能用于设置内部状态。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private Form1 _parentForm;
public Form2(Form1 parentForm) : this()
{
    _parentForm = parentForm;
}

public Form2()
{
    InitializeComponents();
}

private void Form2_Load(object sender, EventArgs e)
{
    richTextBox1.Font = new Font("Times New Roman", 12f, FontStyle.Regular);
    dropdown();
    if(_parentForm != null)
        comboBox1.SelectedIndex = _parentForm.SelectedComboIndex;
    comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
}

试试看它是否有效。只需确保将 Load 处理程序正确添加到表单中(通过设计器或通过 this.Load += new EventHandler(Form2_Load)

在代码中


Note: You should rename all your components to something more useful than controlType1, controlType2 etc. This is good for both you and us.

正如其他人所说,如果 form1.SelectedComboIndex 返回 -1(因为 form1.comboBox1 没有选择任何内容)那么行 comboBox1.SelectedIndex = form1.SelectedComboIndex 将(正确地)将 comboBox1 的值设置为空。

此外,仅仅因为您的 ComboBox 中存在文本并不意味着它具有选定的值。确保您的组合框实际选择了一个值(而不仅仅是更改了它的文本)。您可以通过将 DropDownStyle 设置为 DropDownList 来强制选择一个值。其他两种样式都允许用户输入自定义值。

如果您希望用户能够打字,请考虑将 AutoCompleteMode 设置为 SuggestAppend 并将 AutoCompleteSource 设置为 ListItems。这样可以更轻松地从组合框中正确选择值,而不仅仅是更改文本(不小心将其保留为空)。

  • 所以我得到的感觉是这行代码comboBox1.SelectedIndex = form1.SelectedComboIndex;

有关关于c#:从另一个表单设置combobox selectedindex时出现问题的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby-openid:执行发现时未设置@socket - 2

    我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass

  3. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  4. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  5. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  6. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  7. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  8. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  9. ruby-on-rails - 渲染另一个 Controller 的 View - 2

    我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>

  10. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

随机推荐