gpt4 book ai didi

vb.net - 一个类应该如何向另一个类请求信息?

转载 作者:行者123 更新时间:2023-12-02 06:30:54 26 4
gpt4 key购买 nike

我正在开发用于 CAD 绘图的 VB.NET 批量 PDF 导出程序。程序运行良好,但架构一团糟。基本上,一个大函数负责从开始到结束的整个过程。我想创建一个或多个单独的类来完成导出工作。

问题是这样的:
有时我的程序创建的 pdf 文件已经存在。在这种情况下,我想询问用户是否愿意覆盖现有的 PDF。我只想在确实有东西会被覆盖的情况下执行此操作,并且我只想执行一次。换句话说,"is"=“所有人都同意”。让表单(将调用这个新的 PDF 导出类)弄清楚 PDF 文件将被调用的内容以及是否会有任何覆盖似乎是错误的。事实上,最好在处理各个 CAD 绘图时确定 PDF 文件的名称(因为我可能想要使用只有在后台将文件加载到 CAD 程序中后才可用的信息)。

问题是这样的:
我应该如何处理提示用户的过程?我想将所有 GUI 逻辑(甚至像对话框这样简单的东西)保留在我的 PDF 导出类之外。我需要一种方法让 PDF 导出类说:“嘿,我需要知道是否应该覆盖或跳过这个文件”,而表单类(或任何其他类)则说:“嗯,好吧,我会询问用户并回复您。”

看来应该有某种模式来处理这种情况。它是什么?

后续:

事件:看来这是一个不错的选择。这是关于 PDF 导出类中的代码应该是什么样子的吗?

    Dim e As New FileExistsEventArgs(PDFFile)    RaiseEvent FileExists(Me, e)    If e.Overwrite Then        'Do stuff here    End If

一个疯狂的想法:将委托(delegate)函数传递给 PDF 导出类的导出方法来处理覆盖情况怎么样?

最佳答案

您可以使用事件,创建一个自定义事件参数类,其中包含应用程序可以调用的属性。然后,当您的应用程序处理事件时,提示用户,然后告诉导出器要做什么。我是一名 C# 人员,所以让我先给您一个示例:

void form_Load(object sender,EventArgs e)
{
//We are subscribing to the event here. In VB this is done differently
pdfExporter.FileExists+=new FileExistsEventHandler(pdfExporter_fileExists)
}

void pdfExporter_fileExists(object sender, FileExistsEventArgs e)
{
//prompUser takes the file and asks the user
if (promptUser(e.FileName))
{
}
}

关于vb.net - 一个类应该如何向另一个类请求信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/545985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com