如何将我的VBA宏转换为c#以在windows窗体应用程序中使用?



下午好,

我是c#的绝对初学者,所以请温柔一点。我在c#中创建了一个窗体,但我需要以下VBA代码转换,这样我就可以在我的窗体中使用它。知道从哪里开始吗?我找不到c#

的等效Instr。
Sub clipboard()
Dim clipboard As MSForms.DataObject
Dim strContents As String
Set clipboard = New MSForms.DataObject
clipboard.GetFromClipboard
strContents = clipboard.GetText

If InStr(1, strContents, "TFR") > 0 Then
ErrorType = "TFR"
var1 = WorksheetFunction.Find("ERROR", strContents)
var2 = WorksheetFunction.Find("TFR", strContents, var1)
var3 = WorksheetFunction.Find("'", strContents, var2)
var4 = WorksheetFunction.Find("'", strContents, var3 + 1)
ErrorIdent = Trim(Mid(strContents, var3 + 1, var4 - var3 - 1))
End If


Sheet1.Cells(2, 4) = ErrorType
Sheet1.Cells(2, 6) = ErrorIdent
End Sub

谢谢大家花时间回答我的问题。对于任何遇到这种挑战的人,我已经用下面的代码解决了这个问题。

private void paste_error_Click(object sender, EventArgs e)
{
string aosinformation = Clipboard.GetText();
string errorType = "";
string errorIdent = "";
string laststring = "";
string firststring = "";
string notamerror = "";

if (aosinformation.IndexOf("notam") > 0)
{
errorType = "NOTAM";
int var1 = aosinformation.IndexOf("ERROR");
int var2 = aosinformation.IndexOf("notam", var1);
int var3 = aosinformation.IndexOf("'", var2);
int var4 = aosinformation.IndexOf("'", var3 + 1);
errorIdent = aosinformation.Substring(var3 + 1, var4 - var3 - 
1).Trim(' ');

对于InStr(1, strContents, "TFR") > 0,您可以执行

strContents.IndexOf("TFR") >= 0 // this need to be done since VB strings start at 1

Strings.InStr(strContents, "TFR", CompareMethod.Text) > 0

或者你可以使用string.Contains来获得一个真/假值

strContents.Contains("TFR") // this is the best since you don't care where it the substring is located

最新更新