C# Windows 表单 - 如何重用来自不同按钮单击事件的对象
C# Windows Form - How to Reuse an Object from a Different Button Click Event
我正在构建一个 Windows 表单,用于连接到 HP Quality Center OTA。我能够登录到系统,但是当我单击“登录”按钮时注销后,该对象的前一个实例不会重新初始化。有没有办法重用同一个对象,或者我应该采用不同的方法?这是代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using TDAPIOLELib;
namespace TestLab
{
public partial class Form1 : Form
{
static TDConnection tdc = new TDConnection();
static String qcUrl = "https://serveraddress/qcbin";
static string uid;
public Form1()
{
InitializeComponent();
}
private void login_button1_Click(object sender, EventArgs e)
{
uid = Microsoft.VisualBasic.Interaction.InputBox("Enter your User ID", "User ID", " ", 0, 0);
string pwd1 = Microsoft.VisualBasic.Interaction.InputBox("Enter your password", "Password", " ", 0, 0);
// TDConnection tdc = new TDConnection();
tdc.InitConnectionEx(qcUrl);
tdc.Login(uid, pwd1);
label1.Text = " ";
label1.Text = uid + " logged into HPQC.";
}
private void label1_Click(object sender, EventArgs e)
{
}
private void logout_button1_Click(object sender, EventArgs e)
{
tdc.Logout();
tdc.Disconnect();
tdc = null;
label1.Text = " ";
label1.Text = uid + " logged out of HPQC.";
}
}
}
在注销代码中,您将全局变量 tdc
设置为空。当然,这意味着您需要通过调用 new TDConnection
来重新初始化它
你似乎有两个选择。
- 移除注销中将tdc变量设置为null的行
代码。保持其他一切不变
- 不要在全局级别初始化变量 tdc 而只是
每次输入登录代码并在注销代码中保留将变量 tdc 设置为 null 的行。
还要考虑这些类型的对象通常实现 IDisposable 接口。如果它与您的 TDConnection class 相同,那么最好在注销代码中调用 Dispose 方法
我正在构建一个 Windows 表单,用于连接到 HP Quality Center OTA。我能够登录到系统,但是当我单击“登录”按钮时注销后,该对象的前一个实例不会重新初始化。有没有办法重用同一个对象,或者我应该采用不同的方法?这是代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using TDAPIOLELib;
namespace TestLab
{
public partial class Form1 : Form
{
static TDConnection tdc = new TDConnection();
static String qcUrl = "https://serveraddress/qcbin";
static string uid;
public Form1()
{
InitializeComponent();
}
private void login_button1_Click(object sender, EventArgs e)
{
uid = Microsoft.VisualBasic.Interaction.InputBox("Enter your User ID", "User ID", " ", 0, 0);
string pwd1 = Microsoft.VisualBasic.Interaction.InputBox("Enter your password", "Password", " ", 0, 0);
// TDConnection tdc = new TDConnection();
tdc.InitConnectionEx(qcUrl);
tdc.Login(uid, pwd1);
label1.Text = " ";
label1.Text = uid + " logged into HPQC.";
}
private void label1_Click(object sender, EventArgs e)
{
}
private void logout_button1_Click(object sender, EventArgs e)
{
tdc.Logout();
tdc.Disconnect();
tdc = null;
label1.Text = " ";
label1.Text = uid + " logged out of HPQC.";
}
}
}
在注销代码中,您将全局变量 tdc
设置为空。当然,这意味着您需要通过调用 new TDConnection
你似乎有两个选择。
- 移除注销中将tdc变量设置为null的行 代码。保持其他一切不变
- 不要在全局级别初始化变量 tdc 而只是 每次输入登录代码并在注销代码中保留将变量 tdc 设置为 null 的行。
还要考虑这些类型的对象通常实现 IDisposable 接口。如果它与您的 TDConnection class 相同,那么最好在注销代码中调用 Dispose 方法