Android C#按钮单击密码生成

时间:2018-04-03 10:47:55

标签: c# android

我尝试使用4个复选框创建一个简单的密码生成应用程序,我之前使用过相同的代码,从C#Winform应用程序中的下一部分代码开始,它的工作非常好。

if(upper.Checked | lower.Checked | number.Checked | symbol.Checked)

但是,在我的Android应用程序中尝试相同的代码时,我在下面的部分中收到错误,指出字符串不正确。

int _len = Convert.ToInt32(txtPassword.Text);

我错过了什么? PS。我是Android的新手,但在

之前完成了一些Winform工作
using Android.App;
using Android.Widget;
using Android.OS;
using System;
using System.Linq;

namespace PasswordGenerator
{
[Activity(Label = "PasswordGenerator", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
    CheckBox upper;
    CheckBox lower;
    CheckBox number;
    CheckBox symbol;
    TextView txtPassword;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        SetContentView(Resource.Layout.Main);

        Button button1 = FindViewById<Button>(Resource.Id.btnGenerate);
        txtPassword = FindViewById<TextView>(Resource.Id.txtPassword);
        upper = FindViewById<CheckBox>(Resource.Id.upper);
        lower = FindViewById<CheckBox>(Resource.Id.lower);
        number = FindViewById<CheckBox>(Resource.Id.number);
        symbol = FindViewById<CheckBox>(Resource.Id.symbol);

            button1.Click += (sender, e) => {
                string message = string.Empty;

                if (upper.Checked | lower.Checked | number.Checked | 
symbol.Checked)
                {
                    int _len = Convert.ToInt32(txtPassword.Text);
                    string _chars = "";
                    if (upper.Checked) _chars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                    if (lower.Checked) _chars += "abcdefghijklmnopqrstuvwxyz";
                    if (number.Checked) _chars += "0123456789";
                    if (symbol.Checked) _chars += "~!@%$<>^&_-#";
                    var _rnd = new Random();
                    var _pass = new string(
                    Enumerable.Repeat(_chars, _len)
                    .Select(s => s[_rnd.Next(s.Length)])
                    .ToArray());
                    txtPassword.Text = _pass;
                }
                else
                {
                    message = ("Error: Please select one or more password 
options");
                }
            };
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您需要访问var td, div; div = document.createElement("div"); div.classList.add("orders_displayed"); if(d){ d.forEach(function(d){ console.log(dt(d.cDD) + " cdd " + d.cDD); td = document.getElementById(dt(d.cDD)); div.id = d.oID; div.innerHTML += d.cName; div.style.backgroundColor = staff(d.staff); td.appendChild(div); console.log(staff(d.staff) + " cdd " + d.staff); console.log(td + " " + td.id); }); } 的{​​{1}}媒体资源:Length

但由于txtPassword.Text已经是int _len = Convert.ToInt32(txtPassword.Text.Length);,因此您无需转换它;只需将其分配给您的变量:Length

哦,每次点击按钮时请不要实例化新的int。如果您快速单击该按钮,则每次单击该按钮时,这可能会导致您获得相同的数字。