我需要在我现有的应用程序中添加一个表单,我已经完成了所有工作,但是我如何使用表单中的代码使其无缝。有什么想法吗?并且对于代码墙感到遗憾,只是觉得它可能有所帮助。
“验证”按钮应从控制台获取其信息,如下所示
Generate操作应该附加校验位,如本例所示
public static void Main(string[] args)
{
Console.Write("Enter a valid 10 digit ISBN Number ");
string isbn = isbnChecker.DestabilizeIsbn(Console.ReadLine()); // Normalizes the input and puts it on string "str"
if (isbn.Length > 10 || isbn.Length < 9) // If the string length is greather than 10, or smaller than 9
{
Console.WriteLine("The number you have entered is not a valid ISBN try again."); // Print invalid number
Console.ReadLine();
}
else if (isbn.Length == 10) // If the length is 10
{
if (isbnChecker.CheckNumber(isbn)) // If function CheckNum return "true"...
Console.WriteLine("The number you have entered is a valid ISBN");
else // If it returns "false"...
Console.WriteLine("The number you have entered is not a valid ISBN try again.");
Console.ReadLine();
}
else // Else (If the number is NOT greater than 10 or smaller than 9, NOR is it 10 -> If the number is 9)
{
Console.WriteLine("The Check digit that corresponds to this ISBN number is " + checkIsbnClass.CheckIsbn(isbn) + "."); // Print the checksum digit
Console.ReadLine();
}
}
public static class isbnChecker
{
public static bool CheckNumber(string isbn) // Checks if the checksum digit is correct
{
if (isbn[9].ToString() == checkIsbnClass.CheckIsbn(isbn)) // If the 10th digit of the number is the same as the calculated digit...
return true;
else // If they're not the same...
return false;
}
public static string DestabilizeIsbn(string isbn) // replace the string
{
return isbn.Replace("-", "").Replace(" ", "");
}
}
public static string CheckIsbn(string isbn) // Calculates the 10th digit of a 9-digits partial ISBN number
{
int sum = 0;
for (int i = 0; i < 9; i++) // For each number...
{
sum += int.Parse(isbn[i].ToString()) * (i + 1); // ...Multiply the number by it's location in the string
}
if ((sum % 11) == 10) // If the remainder equals to 10...
{
return "x"; // Output X
}
else // If it does not equal to 10...
{
return (sum % 11).ToString(); // Output the number
}
}
public static bool CheckNumber(string isbn) // Checks if the checksum digit is correct
{
if (isbn[9].ToString() == CheckIsbn(isbn)) // If the 10th digit of the number is the same as the calculated digit...
return true;
else // If they're not the same...
return false;
}
public static string DestabilizeIsbn(string isbn) // replace the string
{
return isbn.Replace("-", "").Replace(" ", "");
}
}
public partial class IsbnForm : Form
{
public IsbnForm()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
this.xInputTextBox.Text = "Enter a Valid ISBN";
}
}
}
答案 0 :(得分:2)
我不确定你在这里问的是什么。如果您希望用户在表单中输入ISBN,那么您可以这样做:
using (var frm = new IsbnForm())
{
var rslt = frm.ShowDialog();
if (rslt == DialogResult.OK)
{
// Access property that gets the value the user entered.
}
else
{
// User canceled the form somehow, so show an error.
}
}
如果要显示表单并让输入字段显示用户在命令行中输入的ISBN,那么您需要向IsbnForm
类添加属性或方法,以便您可以在显示表单之前设置值。也就是说,在IsbnForm
内,添加以下属性:
public string Isbn
{
get { return xInputTextBox.Text; }
set { xInputTextBox.Text = value; }
}
然后,填充它:
Console.Write("Enter an ISBN: ");
var isbn = Console.ReadLine();
using (var frm = new IsbnForm())
{
frm.Isbn = isbn; // populates the field in the form.
var rslt = frm.ShowDialog();
// etc, etc.
}