WindowsForms автоматически сгенерировал класс, как мне выделить это в собственное пространство имен? - PullRequest
1 голос
/ 20 сентября 2019

Я создал приложение формы Windows в пространстве имен TestUI, у него есть класс клиента, экземпляр которого описан ниже:

    List<Customer> cl = db.Customers.ToList();

Но Customer указывает на автоматически сгенерированный файл класса в том же пространстве именTestUI.Customer.Я создал новый класс DataLayerTest.Customer, но я не знаю, как сделать исходную ссылку на этот класс.

Я попытался добавить оператор using в начало файла, и пока я могу ссылаться на негоесли я переименую его, я не смогу получить доступ к нему вместо автоматически сгенерированного класса.

Вот код моей CustomerForm:

using TestDataModel.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace TestUI
{
    public partial class CustomerForm : Form
    {

        public CustomerForm()
        {
            InitializeComponent();
        }

        private void ClearButton_Click(object sender, EventArgs e)
        {
            custListBox.ClearSelected();
        }

        private void AddNewCustButton_Click(object sender, EventArgs e)
        {
            this.Hide();
            CreateCustomer cc = new CreateCustomer();
            cc.ShowDialog();
        }

        private void CustomerForm_Load(object sender, EventArgs e)
        {

            Test2UEntitiesA db = new Test2UEntitiesA();
            List<Customer> cl = db.Customers.ToList();
            custListBox.DataSource = cl;
            custListBox.DisplayMember ="CustomerName";
            takeNewOrderButton.Enabled = false;

        }

        private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Customer customer = (Customer)custListBox.SelectedItem;
            label1.Text = customer.CustomerNumber.ToString();
            label2.Text = customer.CustomerName;
            takeNewOrderButton.Enabled = true;
        }

        private void TakeNewOrderButton_Click_1(object sender, EventArgs e)
        {
            OrderBasketForm ob = new OrderBasketForm((Customer)custListBox.SelectedItem);
            ob.Show();
            this.Hide();
        }
    }
}

И это код для формы заказа, которыйиспользует объект клиента

using TestDataModel.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace TestUI
{
    public partial class OrderBasketForm : Form
    {
        Customer cust;
        public static OrderBasket ob;
        public OrderBasketForm(Customer customer)
        {
            InitializeComponent();
            cust = customer;
            ob = new OrderBasket();
            Test2UEntitiesA db = new Test2UEntitiesA();
            List<Product> pl = db.Products.ToList();
            label2.Text = cust.CustomerName;
            discValue.Text = cust.Discount.ToString();
        }

        private void CancelButton_Click(object sender, EventArgs e)
        {
            this.Hide();
            CustomerForm cf = new CustomerForm();
            cf.ShowDialog();
        }

        private void AddButton_Click(object sender, EventArgs e)
        {
            int quantity;
            Product product = (Product)productNameBox.SelectedItem;
            quantity = (int)quantityCounter.Value;

            if (quantity <= 0)
            {
                MessageBox.Show("No quantity has been selected", "Quantity Invalid", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                return; //No items selected
            }

            else
            {
                ob.AddProduct(product.ProductNumber, product.ProductName, product.Price, product.RecommendedRetailPrice, quantity, product.Description);
                BasketItemsToListView();
            }



        }

        public void BasketItemsToListView()
        {
            basketListView.Items.Clear();

            numOfItems.Text = ob.NumberOfItems.ToString();
            numOfProducts.Text = ob.NumberOfProducts.ToString();
            totalBox.Text = string.Format("{0:C2}", ob.BasketTotal);
            discTotal.Text = string.Format("{0:C2}", ob.BasketTotal);

            //Using ListView Control to display basket contents
            foreach (BasketItem bItem in ob.BasketItems)
            {
                ListViewItem item = new ListViewItem(new[]
                {
                    bItem.ProductNumber.ToString(),
                    bItem.ProductName,
                });

                basketListView.Items.Add(item);
            }

            clearButton.Enabled = true;

        }

        private void ClearButton_Click(object sender, EventArgs e)
        {
            DialogResult clearResponse = MessageBox.Show("Are you sure you want to clear the basket?", "Clear Basket", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
            if (clearResponse == DialogResult.Yes)
            {
                ClearBasket();
            }
        }

        private void ClearBasket()
        {
            ob.ClearBasket();
            BasketItemsToListView();
        }

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

        private void RemoveButton_Click(object sender, EventArgs e)
        {
            if (basketListView.SelectedItems.Count <= 0)
                return; //No items selected
            ob.RemoveProduct(Int32.Parse(basketListView.SelectedItems[0].Text));
            BasketItemsToListView();
            removeButton.Enabled = false;
        }

        private void CheckOutButton_Click(object sender, EventArgs e)
        {
            if (ob.NumberOfItems == 0)
            {
                MessageBox.Show("The basket is currently empty!", "Basket Empty", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                return;
            }

            Test2UEntitiesA db = new Test2UEntitiesA();

            List<OrderItem> itemsToAdd = new List<OrderItem>();

            //create list populate with orderbasket
            foreach (BasketItem item in ob.BasketItems)
            {
                itemsToAdd.Add(new OrderItem
                {
                    ProductNumber = item.ProductNumber,
                    Quantity = item.Quantity
                });
            }

            //create an order object - needs to match the format of database table
            Order order = new Order
            {
                OrderDate = DateTime.Now,
                CustomerNumber = cust.CustomerNumber,
                CustomerDiscount = cust.Discount,
                OrderStatus = 1,
                OrderTotalBeforeDiscount = ob.BasketTotal,
                OrderItems = itemsToAdd
            };



            //save changes to db
            db.Orders.Add(order);
            db.SaveChanges();

            OrderHistoryForm ohf = new OrderHistoryForm(cust);
            ohf.Show();
            this.Hide();
        }
    }
}

1 Ответ

0 голосов
/ 20 сентября 2019

Если в вашем решении более одного проекта, вы можете вручную добавить ссылку на этот проект, отредактировав файл .csproj и добавив в него этот блок

<ItemGroup>
    <ProjectReference Include="..\ProjectName\ProjectName.csproj" />
  </ItemGroup>

, затем используяЗаявление будет работать.Visula studio иногда сталкивается с ошибкой, пытаясь сделать это самостоятельно.

Но также вам следует сначала попытаться открыть основной .cs file, который вы пытаетесь использовать, но не можете найти его в другом файле,измените его пространство имен, а затем попробуйте обратиться к нему снова.Иногда наши соглашения об именах конфликтуют с пространствами имен .Net или библиотеками классов, о которых вы, возможно, никогда не слышали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...