【问题标题】:C# Forms radiobutton clicked multiple times while checkedC# Forms 单选按钮在选中时单击了多次
【发布时间】:2020-10-30 00:23:24
【问题描述】:

我的表单中有两个并排的单选按钮,其中一个在单击时会生成一个随机密码,这很好,但是我如何获得它,如果再次单击(已经检查)它会再次运行代码,这个不是我的代码的问题,所以不需要,它更多的是 Visual Studio 的 winforms 单选按钮的问题。提前致谢

private void NAPOCustom_CheckedChanged(object sender, EventArgs e) //Weird radiobutton name i know
        {
            NAPasswordE.Clear(); //text box which generation password goes into
                string validChars = "ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*?_-";
            Random random = new Random();
            char[] chars = new char[12];
            for (int i = 0; i < 12; i++)
            {
                chars[i] = validChars[random.Next(0, validChars.Length)];
            }
            NAPasswordE.Text = new string(chars);
        }

我点击单选按钮

期望的输出: 随机字符串(可行)

我再次点击同一个单选按钮

期望的输出: 随机字符串,但与第一个不同(不起作用)

【问题讨论】:

  • 你不应该使用单选按钮来做这样的行为,因为这是一个 UX 反模式。
  • 您很可能正在寻找Click 事件。但我强烈建议你不要滥用单选按钮是这样的。相反,您应该有一个执行此操作的常规按钮
  • 如果单击已选中的按钮,则不得调用选中的更改事件...但它使用鼠标单击事件来实现。
  • @OlivierRogier 感谢您告诉我我的问题。有什么办法解决吗?
  • 不知道,也许是:stackoverflow.com/questions/11493845/…。能否加个代码文件的链接或者放在问题里?

标签: c# winforms


【解决方案1】:

您可以同时处理 Click() 和 CheckChanged() 事件。从技术上讲,它会产生两个密码,但在这种情况下,我认为这并不重要。将您的密码生成代码移到一个单独的方法中,并从两个事件处理程序中调用它。还要将你的 Random 移到班级级别。

类似:

private Random random = new Random();

private void NAPOCustom_Click(object sender, EventArgs e)
{
    RandomPassword();
}

private void NAPOCustom_CheckedChanged(object sender, EventArgs e)
{
    if (NAPOCustom.Checked)
    {
        RandomPassword();
    }
}

private void RandomPassword()
{           
    string validChars = "ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*?_-";
    char[] password = validChars.ToCharArray().OrderBy(x => random.Next()).Take(12).ToArray();            
    NAPasswordE.Text = new string(password);
}

【讨论】:

  • 我觉得这行得通,但我复制并粘贴了这个,我没有得到 _Click 位的参考,所以它确实有效,有什么想法吗?
  • 这确实会生成一个随机密码,但只有当我单击不同的单选按钮并且我无法多次单击它时
  • 您必须为您的 RadioButton 连接 Click() 事件。在您的表格中选择“NAPOCustom”。在默认情况下右下角的属性窗格中,单击“闪电图标”以获取事件列表。找到“Click”条目并将下拉列表更改为右侧,使其指向“NAPOCustom_Click”。
  • 好的,它可以生成一个随机字符串,但如果多次单击则不起作用(保持不变)
  • 它适用于我的系统上的多次点击。您可能没有正确连接 CLICK 事件。
猜你喜欢
  • 2019-05-05
  • 2013-11-22
  • 2020-10-15
  • 1970-01-01
  • 2012-05-13
  • 2014-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多