在将VB6代码转换为VB.NET的过程中,我需要替换以下代码,这些代码旨在关闭应用程序中剩余的所有打开的表单.
'close all sub forms
For i = My.Application.OpenForms.Count - 1 To 1 Step -1
'UPGRADE_ISSUE: Unload Forms() was not upgraded. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="875EBAD7-D704-4539-9969-BC7DBDAA62A2"'
Unload(My.Application.OpenForms(i))
Next i
Run Code Online (Sandbox Code Playgroud)
我Unload用Close(用TFM表示)替换了函数,但是编译器抱怨它OpenForms不是.的成员My.Application.
我在哪里可以访问开放表格?
我在视觉基础上和一个人谈论linq.他在vb中显示了linq表达式,但我不能确定它是管理还是非管理(vb6),因为我从来没有使用过它们中的任何一个.
VB6有linq表达式吗?
是否可以将一段文本(从文本框中抓取)转换为一条连续的行?
我可以得到以下信息:
34 MyRoad
da7 888
london
the moon
Run Code Online (Sandbox Code Playgroud)
我想要它阅读:
34 MyRoad da7 888 london the moon
Run Code Online (Sandbox Code Playgroud)
提前致谢
编辑:添加空格以导致换行,并将样本数据格式化为代码
我正在导入多个字段,即大约 25 行代码,每行导入一个字段(就我而言,确实没有其他方法)。它位于 try-catch 块中,但有时该字段在源代码中不存在,但我必须获取其余字段。
从 20 开始。
我得到 10,
第 11 个不存在(例外)我仍然需要从 12 到 20。
如果我不想一一测试是否存在,我想知道 try 是如何工作的。如果发生异常,它不会执行其余部分,对吧?什么适合我?
obs:已经超过20个了,我想要一个智能且无污染的解决方案。
我有一个用C#编写的DLL,并设置为COM可见性.我将它设置为并排组件,并且可以将应用程序成功部署到客户端PC免费注册.我的问题与开发PC有关.是否可以在类似的免注册庄园中针对DLL进行编译,或者是否需要在开发机器上进行注册?我已经尝试通过Project -> References菜单直接添加DLL 并收到错误,指出"无法添加对特定文件的引用".DLL与.vbp文件位于同一目录中,我尝试添加DLL,无论是否存在客户端应用程序清单.
我解释一下我的问题:
我在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#转换为VB.NET,而我在查找VB.NET与C#的yield关键字方面存在差异.我意识到'yield'不是VB.NET的可转换关键字,所以有人可以告诉我如何在VB.NET中实现这个代码.除了实现的GetEnumerator()函数之外,我将其全部转换过来.它只是一个实现CollectionBase和IEnumerable的类(使LINQ值得):
[Serializable()]
public partial class Customers : CollectionBase, System.Collections.Generic.IEnumerable<BusinessLayer.Customer>
{
public new System.Collections.Generic.IEnumerator<BusinessLayer.Customer> GetEnumerator()
{
foreach (BusinessLayer.Customer Cust in this.List)
{
yield return Cust;
}
}
public Customers()
{
}
public Customers(DataRowCollection datarows) : this()
{
this.Load(datarows);
}
protected void Load(DataRowCollection dataRows)
{
foreach (DataRow dr in dataRows) {
this.Add(new Customer(dr));
}
}
public Customer this[int index] {
get { return (Customer)base.InnerList[index]; }
set { base.InnerList[index] = value; }
}
public int Add(Customer val)
{
return base.InnerList.Add(val);
}
}
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助!
NET等效于vbUnicode UTF32Encoding/UTF32Decoding吗?
我在IF条件0中找到了一个代码!与用户输入的值相比较.我试过'0!' 立即窗口中的值,它仅返回0.
所以,我想知道'!' 完全签署??
提前致谢.
我目前正在将一些代码从VB6.0迁移到VB.NET,并注意到了一个问题.我是VB6.0的新手,现在我知道可以通过以下方式返回多个值:
Function test(str1 As String, str2 As String) As Long
str1 = "Hello World1"
str2 = "Hello World2"
test = 0
End Function
Run Code Online (Sandbox Code Playgroud)
当我调试时,我可以看到传递的参数现在已更新.但是我的问题是VB.NET似乎没有这样做.我怎么能在VB.NET中做到这一点?
任何意见,将不胜感激.
vb.net ×9
vb6 ×7
c# ×2
.net ×1
basic ×1
com ×1
com-interop ×1
dll ×1
exception ×1
generics ×1
ienumerable ×1
linq ×1
module ×1
parameters ×1
regfreecom ×1
side-by-side ×1
try-catch ×1
unmanaged ×1
winforms ×1