C# 检查焦点密码生成器C的窗口#

C# 检查焦点密码生成器C的窗口#,c#,.net,windows,C#,.net,Windows,对于我的年终项目,我正在创建一个密码生成器,您可以在其中生成密码,然后您可以选择是否要将其存储在本地压缩数据库(.sdf)中。我现在正在开发GUI。我正在为密码创建一个强度条,但问题是,如果不先移动滑块,我似乎无法让它更新强度条。让我给你们展示一下我所说的例子。我想知道我是否可以用代码或动作事件来实现这一点。告诉我你的想法。下面是GUI设计器的一些代码。你认为这是个好主意还是有更好的办法?焦点的想法来自于如果窗口有焦点,它将继续检查选项,看看是否有任何变化。视频: 名称空间密码生成器 { 公共部

对于我的年终项目,我正在创建一个密码生成器,您可以在其中生成密码,然后您可以选择是否要将其存储在本地压缩数据库(.sdf)中。我现在正在开发GUI。我正在为密码创建一个强度条,但问题是,如果不先移动滑块,我似乎无法让它更新强度条。让我给你们展示一下我所说的例子。我想知道我是否可以用代码或动作事件来实现这一点。告诉我你的想法。下面是GUI设计器的一些代码。你认为这是个好主意还是有更好的办法?焦点的想法来自于如果窗口有焦点,它将继续检查选项,看看是否有任何变化。视频:

名称空间密码生成器
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有无效文件工具条带菜单项单击(对象发送方,事件参数e)
{
}
私有void quitToolStripMenuItem\u单击(对象发送者,事件参数e)
{
这个。关闭();
}
私有void quitToolStripMenuItem1\u单击(对象发送方,事件参数e)
{
这个。关闭();
}
私有void b复制\u单击(对象发送方,事件参数e)
{
if(passwordGenBox.Text.Length!=0)
{
Clipboard.SetText(passwordGenBox.Text);
}
其他的
{
MessageBox.Show(“未生成密码”,“复制错误”,
MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
私有void b清除单击(对象发送者,事件参数e)
{
passwordGenBox.Text=“”;
}
私有void lengthSlider_滚动条(对象发送方,事件参数e)
{
sliderLength.Text=lengthSlider.Value.ToString();
int str=长度滑块.Value;
bool scheck=symCheck.Checked;
bool ncheck=数字检查。已检查;
//1-10无符号或数字

如果(str>0&&str 0&&str 0&&str 0&&str那么,很难理解您在这里实际提出的问题,但是您的进度条没有更新的原因是,除非您移动滑块,否则您实际上没有告诉它更新

请注意,在“lengthSlider”组件的幻灯片事件中,密码是否为“OK、weak或okay”的逻辑是如何设置的。但是,在该代码中,您没有设置ProgressBar的值-这似乎是在“bgen_Click”事件中完成的,我假设该事件是生成密码按钮

为了在操作单个控件时更新GUI,您需要调用适当的代码。我建议您将所有逻辑放入有意义的函数中,并根据需要调用它们

就我个人而言,我有以下几点:

  • GetPasswordStrengthString();-选中符号和数字复选框。选中该复选框和长度可为“strLabel”标签返回适当的字符串

  • CalculateStrengthBarLength();-确定ProgressBar长度的所有逻辑


然后,这些将在您希望它们生效的任何地方被调用。例如,在符号和数字复选框的CheckedChanged事件中,您希望看到它在进度栏中反映出来。

您能澄清您真正的问题吗?您说“但问题是,我似乎无法让它在不移动滑块的情况下更新强度条。“但是,由于您更新强度的代码在滑块的滚动事件中,这似乎是有意义的,它将在该时间更新。?Daniel实际上回答了我所要的。我应该将它们放在不同的函数中。
namespace PasswordGenerator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void fileToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void quitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void quitToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void bcopy_Click(object sender, EventArgs e)
        {
            if (passwordGenBox.Text.Length != 0)
            {
                Clipboard.SetText(passwordGenBox.Text);
            }
            else
            {
                MessageBox.Show("No Password Generated.", "Copy Error",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void bclear_Click(object sender, EventArgs e)
        {
            passwordGenBox.Text = "";
        }

        private void lengthSlider_Scroll(object sender, EventArgs e)
        {
            sliderLength.Text = lengthSlider.Value.ToString();
            int str = lengthSlider.Value;
            bool scheck = symCheck.Checked;
            bool ncheck = numbersCheck.Checked;
            //1-10 no symbols or numbers
            if (str > 0 && str <= 10)
            {
                strLabel.Text = "Week";
            }
            //1-10 symbols no numbers
            if (str > 0 && str <= 10 && scheck == true && ncheck == false)
            {
                strLabel.Text = "Alright";
            }
            //1-10 no symbols but numbers
            if (str > 0 && str <= 10 && scheck == false && ncheck == true)
            {
                strLabel.Text = "Week";
            }
            //1-10 symbols & numbers
            if (str > 0 && str <= 10 && scheck == true && ncheck == true)
            {
                strLabel.Text = "Okay";
            }
        }

        private void bgen_Click(object sender, EventArgs e)
        {
            int pwlength = lengthSlider.Value;
            bool symbols = false;
            bool numbers = false;
            if (symCheck.Checked && numbersCheck.Checked)
            {
                symbols = true;
                numbers = true;
            }
            else if (symCheck.Checked && numbersCheck.Checked == false)
            {
                symbols = true;
                numbers = false;
            }
            else if (symCheck.Checked == false && numbersCheck.Checked)
            {
                symbols = false;
                numbers = true;
            }
            else
            {
                symbols = false;
                numbers = false;
            }
            Generator gen = new Generator(pwlength, symbols, numbers);
        }
    }
}