WindowsForms 自动生成一个类,如何将其分离到它自己的命名空间中?



我在命名空间 TestUI 中创建了一个 Windows 表单应用程序,它有一个客户类,实例化如下:

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

但是Customer指向同一命名空间中自动生成的类文件TestUI.Customer。我已经创建了一个新的类DataLayerTest.Customer但我不知道如何使原始引用成为此类。

我尝试在文件顶部添加一个using语句,虽然如果我重命名它可以引用它,但我无法访问它来代替自动生成的类。

这是我的客户表单的代码:

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();
}
}
}

如果解决方案中有多个项目,则可以通过编辑.csproj文件并将此块添加到其中来手动添加对该项目的引用

<ItemGroup>
<ProjectReference Include="..ProjectNameProjectName.csproj" />
</ItemGroup>

然后 using 语句将起作用。Visula工作室有时会在尝试自己执行此操作时遇到错误。

但是,您应该首先尝试打开您尝试使用但在另一个文件中找不到它的主.cs file,更改其命名空间,然后再次尝试引用它。有时,我们的命名约定会与您从未听说过的 .Net 命名空间或类库冲突。

相关内容

最新更新