小编djv*_*djv的帖子

在Visual Studio中添加VB6引用会导致"类型库导入程序在类型验证期间遇到错误"

我正在将用VB6编写的一个相当大的项目转换为C#.鉴于项目的规模正在移动,它将在18个月的时间内分阶段完成.我遇到了一个问题,即将一个VB6 ActiveX dll的引用添加到.Net项目中.

如果您完全遵循这些步骤,您也应该能够重新创建问题.

我在.Net中编写了一个COM可见的界面:

<ComVisible(True)>
Public Interface ITestInterface
    Property A As String
    Function TestMethod() As String
End Interface
Run Code Online (Sandbox Code Playgroud)

通过在项目属性的"编译"选项卡中选择"注册COM互操作",可以获得TLB文件.

我创建了一个引用此TLB的VB6项目和一个实现暴露接口的类.

Implements ITestInterface

Private mA As String

Public Property Get ITestInterface_A() As String
    ITestInterface_A = mA
End Property

Public Property Let ITestInterface_A(ByVal value As String)
    mA = value
End Property

Public Function ITestInterface_TestMethod() As String
    ITestInterface_TestMethod = "From VB6"
End Function
Run Code Online (Sandbox Code Playgroud)

如果我在VB6中将项目属性的"组件"选项卡设置为使用"远程服务器文件",则在编译时会自动创建TLB.我可以在OleView中查看TLB并查看以下内容(除了在.Net项目中定义的接口的VB6中完成的具体实现的细节):

// typelib filename: TestVB6Interface.dll

[
  uuid(**EF005573-BFC7-436D-A382-F906CA09F94A**),
  version(3.0)
]

// ... some other stuff

// TLib :     // TLib …
Run Code Online (Sandbox Code Playgroud)

c# vb.net vb6 visual-studio-2010 tlbimp

9
推荐指数
1
解决办法
2158
查看次数

尝试删除默认值,但收到服务器上不存在的消息

我需要将列的数据类型从smallint更改为bigint(设计考虑不好,不要问).我运行TSQL

alter table dbo.Test alter column ProductionModeID bigint NULL
Run Code Online (Sandbox Code Playgroud)

但得到消息:

消息5074,级别16,状态1,行1对象'DF_Test_ProductionModeID'取决于列'ProductionModeID'.

消息4922,级别16,状态9,行1 ALTER TABLE ALTER COLUMN ProductionModeID失败,因为一个或多个对象访问此列.

DF_Test_ProductionModeID在dbo中找到了.测试>>约束.(我不知道是怎么DF_Test_ProductionModeID创造的,我也不相信我需要它存在).我按Delete键,选择OK按钮,然后收到以下消息:

===================================

服务器上不存在默认的"DF_Test_ProductionModeID".(SqlManagerUI)


如需帮助,请单击:http://go.microsoft.com/fwlink?ProdName = Microsoft + SQL + Server&ProdVer = 10.50.1447.4+((KJ_RTM).100213-0103 +)&EvtSrc = Microsoft .SqlServer.Management.Smo.ExceptionTemplates .ObjectDoesNotExist&LINKID = 20476


课程地点:

Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DropAllObjects(Boolean stopOnError)中的Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DoDropObject(Int32 objectRowIndex)

所以我现在很困惑,因为如果它不存在,那么它如何依赖于一列呢?

t-sql constraints sql-server-2008

9
推荐指数
1
解决办法
4100
查看次数

寻找WHEEL_DELTA常数

我在继承NumericUpDown的UserControl中处理鼠标滚轮事件

Private Sub MyUpDown_MouseWheel(sender As Object, e As MouseEventArgs) Handles Me.MouseWheel
    Me.Value += e.Delta * Me.Increment ' / WHEEL_DELTA
End Sub
Run Code Online (Sandbox Code Playgroud)

MouseEventArgs.Delta 有这个工具提示:

获取鼠标滚轮旋转的制动器数量的有符号计数,乘以WHEEL_DELTA常量.棘爪是鼠标滚轮的一个凹口.

但是我找不到这个常数.它通常是 120,但我不想通常存钱.如何将其暴露给我的代码?

vb.net winforms

7
推荐指数
1
解决办法
2711
查看次数

在VB.NET中调用过程的优缺点是什么?

我想知道使用Call Keyword调用过程和在VB.NET中没有调用的优缺点?

Private Sub ProOne()
     ' Code Are Here
End Sub

Private Sub Calling()
   ProOne()           ' I would like to know pros and cons of this
   Call ProOne()      ' And I would like to know pros and cons of this
End Sub
Run Code Online (Sandbox Code Playgroud)

在此先感谢所有人.

vb.net procedure

6
推荐指数
3
解决办法
3650
查看次数

LINQ 字典到锯齿状数组?

有一个方法返回 2D 数组,该方法从 LINQ 查询查询字典并尝试在 2D 数组中存储键和值。

但我无法做到这一点

public string[][] GetRecordFields(string selectedRecord)
    {

        var recordFields = (from record in _recordMasterList
                            where record.Item1 == selectedRecord
                            select new 
                            {
                                record.Item2.Keys,
                                record.Item2.Values
                            }).ToArray();
      return recordFields;       
  }
Run Code Online (Sandbox Code Playgroud)

但是失败了,有什么办法吗?

编辑:类型_recordMasterList

List<Tuple<string, Dictionary<string, string>>> _recordMasterList;
Run Code Online (Sandbox Code Playgroud)

c# linq arrays

6
推荐指数
2
解决办法
8384
查看次数

.NET创建新的调度程序

我正在尝试使用调度程序创建第二个线程,以便我可以让主要调度程序(对于UI)完全没有压力,并且让UI不断响应.

现在,我可以为每个sub(或C#中的void)创建多个线程,但是我不可能创建一个新线程并抓住它的调度程序,并调用它吗?这就是我所做的:

Private CheckLoopThread As New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf CheckLoop))

CheckLoopThread.Priority = System.Threading.ThreadPriority.Lowest
CheckLoopThread.Start()
Dim Test As Windows.Threading.Dispatcher = Windows.Threading.Dispatcher.FromThread(CheckLoopThread)
Run Code Online (Sandbox Code Playgroud)

但是,变量"Test"在执行"Nothing"之后.这怎么可能?是另一种创建第二个调度程序的方法吗?

答案在任何.NET表单中都很受欢迎.Visual Basic或C#.我在.NET 4.0框架上使用VB.NET WPF.

提前致谢.

vb.net multithreading dispatcher

6
推荐指数
3
解决办法
6804
查看次数

如何:求解器基础二次最小二乘法

我有两个自变量,GSHGls.使用这两个变量,我试图预测结果,prob.使用以下形式的函数:

prob=a*Gls^2+b*GSH^2+c*Gls+d*GSH+e // (where a,b,c,d,e are coefficients)
Run Code Online (Sandbox Code Playgroud)

数据样本:

Gls( 2.3 2.3 2.5 2.5 2.5 2.5 2.7 2.7 2.7 2.7 2.7 2.9 2.9 2.9 2.9 2.9 3.1 3.1 3.1 3.1 3.1 3.1 3.3 3.3 3.3 3.3 3.3 3.3 3.5 3.5 3.5 3.5 3.5)

GSH( 0.475 0.525 0.425 0.475 0.525 0.575 0.425 0.475 0.525 0.575 0.625 0.425 0.475 0.525 0.575 0.625 0.375 0.425 0.475 0.525 0.575 0.625 0.375 0.425 0.475 0.525 0.575 0.625 0.425 0.475 0.525 …
Run Code Online (Sandbox Code Playgroud)

c# quadratic ms-solver-foundation

6
推荐指数
1
解决办法
1237
查看次数

使用libpcl_surface在boost :: math :: lanczos中调试seg fault

只有在我使用调试标志编译的代码上使用gdb进行调试时,才会出现以下错误

Program received signal SIGSEGV, Segmentation fault.
0x00007fffc79a7ff0 in boost::math::lanczos::lanczos_initializer<boost::math::lanczos::lanczos17m64, long double>::init::init() ()
from /usr/lib/libpcl_surface.so.1.7
Run Code Online (Sandbox Code Playgroud)

操作系统:unbutu 14.04

我有最新的pcl库(1.7 Sprikelhof)和boost库(1.54)

注意,在gdb外部运行时没有段错误.

c++ debugging boost segmentation-fault point-cloud-library

6
推荐指数
1
解决办法
2109
查看次数

使用TVS点阵打印机的.NET PrintDocument动态纸张高度

我的要求是我需要打印发票,它可能包含10行或者可能包含20行.每件东西都应该在一张发票里.

例如,如果您去任何超市,如果您购买3件物品,您可能会收到小额账单.如果您购买30件商品,您可能会收到大笔账单.我想在我的vb.NET应用程序中实现相同的功能.

我确实需要根据账单的性质通过程序增加打印机页面长度.

我正在使用点阵打印机和图形模式打印.

我尝试过的:

截至目前,我已经创建了文本文件,并使用命令行打印使用以下命令打印它

Type Printfile.txt > prn
Run Code Online (Sandbox Code Playgroud)

但是,问题是我无法使用不同的字体,重量或大小来格式化我的文本文件,因为我将其写为文本文件(记事本).

我正在使用streamwriter从VB.NET写入文件,到目前为止我正在尝试在文本文件中格式化它.

我想将一些单词格式化为粗体或斜体和字体大小变化,但由于我使用文本文件格式化,因此我无法这样做.

以下是格式:


Store Name
Store Address
----------------------------------------      
Gift Receipt

Transaction #:          105
Date: 11/10/2009     Time: 6:10:10
Cashier:  2          Register: 5
----------------------------------------      
Item           Description       Quantity
----------------------------------------   
567577         xyz                2
687687         abc                4
–  –           – –                –
----------------------------------------  
                     Net Amount : 6

Thank You for shopping
XYZ StoreName
We hope you’ll come back soon!
Run Code Online (Sandbox Code Playgroud)

.net vb.net printing printdocument point-of-sale

6
推荐指数
1
解决办法
724
查看次数

Visual Studio 2017 未突出显示错误

我最近从 Visual Studio 2012 升级到 2017(更新到版本 15.3.5)并且在 IDE 上遇到了一些问题。

在某个项目中,我没有错误下划线。

在此处输入图片说明

而在错误列表窗格中,“只构建”真实地反映了更多的不是“构建智能感知+”信息

在此处输入图片说明

此外,选择“Build + IntelliSense”后,我只能在“输出”窗口中看到编译器错误。这是构建失败后的错误列表

在此处输入图片说明

但输出窗口有这个:

3>------ 构建开始:项目:...,配置:调试任何 CPU ------
3>C:\Checkout...\MainForm.vb(454,27):错误 BC30311: “Module1.aClass”类型的值无法转换为“Module1.bClass”。

并非所有项目都会发生这种情况。我做了一个新项目,看看我是否可以复制,但我不能。这是一个具有相同代码的新项目,其中错误在代码中带有下划线并且“Build + IntelliSense”有效。

在此处输入图片说明

我什至对 vbproj 文件中的 xml 进行了排序,并“区分”了有问题的项目与新项目,并且没有明显的区别会导致这种情况。两者都引用相同的编译器。这两个项目都针对 .Net 4.6.2,并设置为仅针对 x86 进行编译。违规项目引用了一些其他项目(C# 和 VB.Net)以及第三方 dll 和 nuget 包。除了这些差异之外,别无他物。

违规项目解决方案中的其他项目(C# 和 VB.Net)工作正常。

我在网上看到过类似的问题,但没有修复对我有用。我已经尝试过安装程序中的“修复”选项。然后我卸载了 Visual Studio 并重新安装。

更新:

改变目标框架似乎有一些效果。有这种行为的项目以 4.6.2 为目标,没有显示错误,当它更改为 4.7 时,显示编译错误。然后改回 4.5 它显示错误。然后改回 4.6.2 它显示没有错误。重复这个过程被证明是不可重复的。4.7, 4.5, 4.6, 4.6.2 - 不管怎样,现在都没有显示错误。

链接此 Microsoft 页面https://developercommunity.visualstudio.com/content/problem/7759/no-errors-displayed-in-the-error-list.html也很重要,因为许多其他人似乎也有类似的问题。

vb.net visual-studio roslyn visual-studio-2017

6
推荐指数
1
解决办法
3472
查看次数