我目前正在工作中整理一些转换后的 VB6->VB.Net 代码,但我试图找到 Support.TabLayout 方法的 .Net 等效项,但运气不佳:
Debug.Print(VB6.TabLayout(intPages, lngColumn, .ColPageBreak, .Text))
Run Code Online (Sandbox Code Playgroud)
有谁知道这种方法的等效或替代方法?
在VB6中,有一个函数可以将打印位置移动到下一个tabstop,如下所示:
Print #1, "Total run time: "; _
Fix(tmpTick / 60000) & " min and " _
& Fix((Abs((tmpTick / 60000) - Fix(tmpTick / 60000)) _
* 60)) & " Sec"
Run Code Online (Sandbox Code Playgroud)
我已经将这个VB6重写为VB.NET,但分号仍然完好无损:
mainoutputwriter.WriteLine("Total run time: "; _
Fix(tmpTick / 60000) & " min and " _
& Fix((Abs((tmpTick / 60000) - Fix(tmpTick / 60000)) _
* 60)) & " Sec")
Run Code Online (Sandbox Code Playgroud)
如何更换分号以移动打印位置?
谢谢
我正在 vb6 中阅读以下代码
If someInteger Then
DoSomething
End If
Run Code Online (Sandbox Code Playgroud)
不知道是不是这个意思
someInteger == 1,someInteger > -1,someInteger > 0 或者Convert.ToBoolean(someInteger)C# 中的等价表达式是什么?
有一个旧的vb6项目正在用C#重写,一个函数有以下代码:
If (strPlainChar >= "A" And strPlainChar <= "Z") Then
Run Code Online (Sandbox Code Playgroud)
但显然C#if语句不允许大于字符串,我该如何重新创建这段代码?
我解释一下我的问题:
我在vb6中有一些程序(5-6),在vb6中有很多DLL.我们将在Vb.Net中执行这些DLL和程序的迁移.
我们想从DLL开始,每个程序引用2或3个DLL.
我想在vb.net中执行DLL的迁移(没问题)但是我想保持我的旧vb6 DLL和vb.net中的新版本之间的(二进制)兼容性因为没有它我将不得不重新使用此DLL构建每个应用程序,因为兼容性已被破坏.
我搜索了很多,我试图采取vb6类的GUID并强制它在VB.NET中使用类似的东西:
<Guid("B3F3EF24-F6E8-4XF9-A686-824DXXX2DF0")>
<ProgId("Project.ClsObj")>
Public Class ClsObj
....
Run Code Online (Sandbox Code Playgroud)
并选择:使组件COM-Visible
但即便如此,如果我部署vb.net DLL(与vb6 DLL的名称相同)并使用regasm注册它:该程序不起作用.
如果你有一些想法,我会很感激我不知道我想做的事情是否真的可行
THKS
试图将其转换为C#,但在设置为另一个常量时,或者是一些十六进制值常量时会感到困惑.
Public Const STANDARD_RIGHTS_ALL = &H1F0000
Public Const SYNCHRONIZE = &H100000
Public Const KEY_CREATE_LINK = &H20
Public Const KEY_CREATE_SUB_KEY = &H4
Public Const KEY_ENUMERATE_SUB_KEYS = &H8
Public Const KEY_NOTIFY = &H10
Public Const KEY_QUERY_VALUE = &H1
Public Const KEY_SET_VALUE = &H2
Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or _
KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS _
Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Run Code Online (Sandbox Code Playgroud)
C#?:
public const int KEY_READ = ((STANDARD_RIGHTS_READ || KEY_QUERY_VALUE || KEY_ENUMERATE_SUB_KEYS || KEY_NOTIFY) & (!SYNCHRONIZE));
Run Code Online (Sandbox Code Playgroud) 我有一个混合的VB6(入口点)到.Net应用程序.
在.Net中,我有一个类,它具有Date属性(Date1-Date4),并且公开了,并且COM Visible等等于VB6代码.
在VB6代码中有一个方法,它采用Date ByRef并修改它.
使用在VB6(dt1-dt4)中声明的日期,这可以正常工作,我传递ByRef的日期变量得到更新,但是如果我在我的类(Date1-Date4)上传递.Net日期,它会更新.
work arround是将TmpDate传递给方法,然后将值分配给.Net属性.
然而,我想找到一个合适的解决方案,因为我正在替换VB6代码,这很容易被遗漏.
VB.Net宣言
<ComVisible(True)>
Public Class DotNetDatesClass
Implements INotifyPropertyChanged, IDotNetDatesClass
Private _Date1 As DateTime
<ComVisible(True)>
Public Property Date1 As DateTime Implements IDotNetDatesClass.Date1
Get
Return _Date1
End Get
Set(value As DateTime)
_Date1 = value
End Set
End Property
Run Code Online (Sandbox Code Playgroud)
VB6示例:
dotNetDates.Date1 = DEFAULT_DATE
dotNetDates.Date2 = DEFAULT_DATE
dotNetDates.Date3 = DEFAULT_DATE
dotNetDates.Date4 = DEFAULT_DATE
getDates connectionString, dotNetDates.Date1, dotNetDates.Date2, dotNetDates.Date3, dotNetDates.Date4
Run Code Online (Sandbox Code Playgroud)
解决方法:
Dim dt1 As Date
Dim dt2 As Date
Dim dt3 As Date
Dim dt4 As Date …Run Code Online (Sandbox Code Playgroud) 我在VB6中有一个EXE,它调用最近升级到VB.Net的DLL.这部分工作正常,但我遇到的问题与定位VB.Net DLL引用的另一个COM DLL的互操作有关.
概述:EXE(VB6)调用DLL(VB.Net)的方法A,没有问题.DLL的方法A调用第三方DLL(COM)的方法B,它得到一个错误,就是无法找到COM DLL的互操作文件.
我已经使用测试UI在VB.Net中直接测试,在VB.Net DLL中调用相同的方法A,一切正常.我目前对造成这个问题的原因感到茫然.
谢谢,克里斯
我试图理解这段代码的含义:
Dim Duplicatecheck(0 To 10000) As String * 25
Run Code Online (Sandbox Code Playgroud)
我看到它是一个字符串数组,但是 "* 25" 是做什么的?我对 vb6 数组的看法高低不一,但我看不到任何可以解释它的东西。
我正在将一个应用程序从 VB6 迁移到 VB.Net,它使用货币类/结构。我的问题是:以下代码中 VB6货币的“等价物”是什么?
Public Function getTimeElapsed() As Double
Dim cuStart As Currency
Dim cuStop As Currency
Dim cuFreq As Currency
Dim v As Double
Dim ReturnValue As Double
QueryPerformanceFrequency(liFrequency)
cuStart = LargeIntToCurrency(liStart)
cuStop = LargeIntToCurrency(liStop)
cuFreq = LargeIntToCurrency(liFrequency)
' elapsed time
v = CDbl(cuStop - cuStart) / CDbl(cuFreq)
Select Case ResultUnit
Case CounterUnit.Second
ReturnValue = v
Case CounterUnit.Millisecond
ReturnValue = v * 1000.0#
Case CounterUnit.microsecond
ReturnValue = v * 1000000.0#
Case CounterUnit.nanosecond
ReturnValue = v * …Run Code Online (Sandbox Code Playgroud)