设计文档表单:界面布局与数据绑定

在本教程的第六部分,将继续设计文档表单,名为PurchaseOrderForm。这将涉及到在表单上放置数据绑定控件,并将它们布局成一个可呈现的界面。

完成PurchaseOrderForm - MDI菜单合并

首先,再次删除PurchaseOrderNumber的控件,包括标签和文本框。同时,也从代码中删除purchaseOrderNumberTextbox_TextChanged处理器。现在再次拥有一个空白表单。首先,让向表单添加一个MenuStrip,并创建一个名为"文档"的根菜单项。然而,当输入"文档"这个名字时,将其输入为"&Document"。这将导致'D'下划线,并使菜单响应Alt+D快捷键。基本上,任何想要作为Alt快捷键的字母,就在菜单项名称前加上'&'。

MDI父表单使用菜单合并,以便子表单的菜单合并到主菜单中。现在可以通过运行应用程序并创建一个新表单来测试这一点,将看到"文档"菜单作为主父菜单的一部分。当所有文档都关闭时,"文档"菜单也会消失。

接下来,让改变表单的BackColor属性。目标是模仿Microsoft Word的外观,让表单看起来像一个页面。为了实现这一点,"页面"将是一个Panel,其BackColor为白色,与表单的较暗BackColor形成对比。选择了AppWorkspace作为表单BackColor的颜色,但当然可以根据自己的喜好进行更改。更改BackColor后,通过从工具箱拖动添加一个Panel控件到表单,并将其命名为pagePanel。将BackColor更改为Window。现在表单应该看起来更像一个"页面"文档。希望页面是一个静态大小,不会改变,所以将MaximumSize和MinimumSize都更改为(1024,768)。另外,对于PurchaseOrderForm,将AutoScroll属性更改为True。现在页面将始终保持相同的大小,并且可以根据需要滚动表单。

添加文档Logo

接下来,让添加文档的显示。目标是使文档表单尽可能地类似于打印文档。随着进步,会有一些差异,但不会太多。为项目创建了一个Logo,再次使用卡车,以及公司名称MDI Purchasing, Inc。为了简单起见,文档将仅是灰度的,所以Logo也是灰度的。

让将一个PictureBox拖到表单上。给它一个大小(320,100),并将其Image设置为上面的图像,或者选择的任何其他Logo图像。希望这位于面板的左上角,可以将其位置设置为(24,30)。现在文档表单上有了Logo。

添加采购订单编号显示

对于采购订单编号,想要一个带有标签和属性本身的框。在这种情况下,将使用一个Label来显示采购订单编号。对于这个显示,将创建两个面板,一个在另一个上面。上面的面板将包含标签,上面写着"采购订单编号",并且有一个稍微暗一些的BackColor,另一个将包含实际的PurchaseOrderNumber标签,并且有默认的BackColor。两者都需要一个FixedSingle边框。现在让去数据源工具面板,找到PurchaseOrderNumber。点击它的下拉菜单,并选择Label而不是TextBox。现在将这个属性拖到表单上。再次,将创建两个标签,一个显示属性名称,一个显示属性值。将名称标签移动到上面的面板,并居中。将其Font.Bold属性设置为True。然后将值标签拖到下面的面板。最后,使值标签的大小与它所在的面板相同,并将TextAlign设置为MiddleCenter。所以这里就是应该有的:

添加账单地址显示

首先,对于PurchaseOrder.BillingAddress数据源,在数据源工具面板中,对于它的每个属性,使用下拉菜单将它们从TextBox类型更改为Label类型。现在让创建一个新的2面板集,类似于上面的采购订单编号面板,但这次更大。然后将每个PurchaseOrder.BillingAddress属性拖到更大的底部面板,并按照正常地址的布局方式进行布局。这次也不需要属性名称标签,除了电话和传真,所以删除其他的。当完成后,表单应该看起来像这样:

创建供应商地址显示区域

现在,在Logo下方,重复上述过程,创建一个供应商地址显示区域,然后在账单地址下方,创建一个运输地址显示区域。对于供应商地址,不需要关注,所以可以省略。对于运输地址,不用担心电话和传真号码,除非想要,但对于这个项目不会使用它们。所以在这之后,表单应该看起来像这样:

为地址对象填充一些数据

最后,为了结束这一部分,让在这些地址对象中放入一些数据,看看它们如何填充到表单上。将来将从应用程序配置中加载账单地址和运输地址,将从选定的供应商为文档加载供应商地址,很快就会允许选择。现在,让只是在PurchaseOrder的默认构造函数中放入一些示例数据。

public PurchaseOrder() { _billingAddress = new BillingAddress(); // 示例账单地址数据 _billingAddress.Attention = "Accounts Payable"; _billingAddress.CompanyName = "MDI Purchasing, Inc."; _billingAddress.AddressLine1 = "PO Box 12345"; _billingAddress.City = "Anytown"; _billingAddress.State = "NY"; _billingAddress.ZipCode = "12345"; _billingAddress.PhoneNumber = "212-555-1234"; _billingAddress.FaxNumber = "212-555-1237"; _shippingAddress = new ShippingAddress(); // 示例运输地址数据 _shippingAddress.Attention = "Receiving Dept."; _shippingAddress.CompanyName = "MDI Purchasing, Inc."; _shippingAddress.AddressLine1 = "123 Place Way"; _shippingAddress.AddressLine2 = "Suite 100"; _shippingAddress.City = "Anytown"; _shippingAddress.State = "NY"; _shippingAddress.ZipCode = "12345"; _purchaseOrderNumber = String.Empty; _vendor = new Vendor(); _vendorAddress = _vendor.Address; // 示例供应商地址数据 _vendorAddress.CompanyName = "Nuts and Bolts ETC"; _vendorAddress.AddressLine1 = "321 Street Drive"; _vendorAddress.AddressLine2 = "Suite A"; _vendorAddress.City = "Cityville"; _vendorAddress.State = "CA"; _vendorAddress.ZipCode = "54321"; _vendorAddress.PhoneNumber = "555-456-1234"; _vendorAddress.FaxNumber = "555-456-4321"; _items = new ItemCollection(); }

现在可以运行应用程序,创建一个新文档,地址将被填充,并且应该看起来像这样。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485