将表单添加到现有控制台应用程序?

时间:2010-09-07 20:53:49

标签: c#

我需要在我现有的应用程序中添加一个表单,我已经完成了所有工作,但是我如何使用表单中的代码使其无缝。有什么想法吗?并且对于代码墙感到遗憾,只是觉得它可能有所帮助。

“验证”按钮应从控制台获取其信息,如下所示

alt text

Generate操作应该附加校验位,如本例所示 alt text

alt text

   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";
    }
}

}

1 个答案:

答案 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.
}