在表格/班级之间共享信息[重复]

2024-02-09

我知道标题问题并不独特,并且有很多可用的消息。我打开一个线程的原因是我真的很难根据我的项目来理解这个问题。

最近,我尝试启动 WinForm 以从 REST API 获取值。

就像在 Form1 上进行开始测试一样,单击 MetroButton1 后,我应该获得 MetroTextBox1.Text 的 SessionToken,这可以工作。

我正在努力的地方是使用该输出作为 getvirtualmachine 类的输入。

在类中使用 Form1.connect() 获取 SessionToken 后,我收到以下错误:

非静态字段、方法或属性“Form1.connect()”需要对象引用

不知道如何在全球范围内将其用作多个类的输入。我猜我在某种程度上/某个地方犯了一个大错误。

FORM1

public partial class Form1 : MetroFramework.Forms.MetroForm
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    { }

    public string connect()
    {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:35113/api/sessions/start");
        httpWebRequest.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(metroTextBox3.Text + ":" + metroTextBox4.Text));
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = JsonConvert.SerializeObject(new
            {
                ServerPort = "35107",
                Username = metroTextBox3.Text,
                Password = metroTextBox4.Text,
                Domain = metroTextBox5.Text
            });

            streamWriter.Write(json);
        }

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            dynamic item = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
            return (string)item.Data;
        }
    }

    public  void metroButton1_Click(object sender, EventArgs e)
    {
        metroTextBox1.Text = connect();
    }

获取虚拟机类

public class GetVirtualMachines
{
    public  string gVM()
    {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:35113/api/vms/list/");
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "GET";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = JsonConvert.SerializeObject(new
            {
                SessionToken = Form1.connect(),
            });

            streamWriter.Write(json);
        }

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            dynamic item = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
            return item;
        }
    }
}

您要么需要将该方法设为静态,所以它是类定义的一部分而不是实例方法,即

public static string connect()

或创建一个实例Form1并用它来调用connect()。然而,这最终会产生另一个问题,因为现在你有一个表单挂在内存中,没有人看到(并且会阻止应用程序关闭),所以你真的应该确保它被处置,即。

using(var form = new Form1)
{
    form.connect();
}

然而,我更大的问题是,为什么要使用表单来执行此操作。在我看来更像是connect()方法属于GetVirtualMachines class.

目前,考虑到您所显示的代码,这对工具集的使用确实很糟糕。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在表格/班级之间共享信息[重复] 的相关文章

随机推荐

  • 从私有 Docker 注册表中删除镜像的方法

    我设置了一个私有 Docker 注册表 并且我已将其他计算机上的一些映像推送到此注册表 它是一个 V2 注册表 我不知道从存储库中删除图像的新方法 因为这些推送的图像没有在 CLI 中列出 docker 图像 谁能建议我从磁盘中删除这些图像
  • 为 302 重定向到的另一个域设置 cookie

    这个问题比其他任何问题都更像是一个现实检验 我很确定这是可能的 但想确定一下 我正在编写一个代理服务器 它接收 HTTP 请求 将它们传递到远程服务器 然后返回远程服务器的响应 我遇到了一个问题 远程服务器响应之一是设置 cookie 的
  • _popen: 不显示 shell 窗口 (SW_HIDE)

    当我在 c mfc 中执行 popen 命令时 它会打开一个我不喜欢的 shell 窗口 是否可以将其隐藏 例如 当您尝试使用 ShellExecute 函数执行命令时 它可以选择使用 SW HIDE 隐藏 shell 窗口 注释来自文档
  • 如何从 django 的查询集中排除非活动用户

    我想从我的项目中排除非活跃用户 example 1 url users 1 friends will show all friends of that user 我想只显示朋友列表中的活跃用户 example 2 url users 1 f
  • 如何在 iOS 上开始使用 ARM?

    只是好奇如何开始了解 iOS 下的 ARM 任何帮助都会非常好 在我看来 最好的开始方式是 编写 C 代码小片段 后来的 Objective C 查看对应的汇编代码 找出足以理解汇编代码的内容 Repeat 为此 您可以使用 Xcode 创
  • 为什么即使在使用异步等待多个调用后仍然得到空响应?

    这是简单的节点路由 其中 调用异步api 需要做的是return data循环之后 但它返回空白对象 try const array brunch lunch crunch const data array map async d gt c
  • 如果广度优先搜索 (BFS) 可以更快地完成同样的事情,为什么还要使用 Dijkstra 算法呢?

    两者都可用于从单一源查找最短路径 BFS运行在O E V 而 Dijkstra 运行O V E log V 另外 我见过 Dijkstra 在路由协议中的使用很像 因此 如果 BFS 可以更快地完成同样的事情 为什么还要使用 Dijkstr
  • 比较同一目录中的文件

    我们有 20 个文件 名为file txt全部在一个目录中 file1 txt file2 txt file20 txt 在同一目录中 我们还有其他文件 我们需要忽略它们 someotherfile csv somemore txt etc
  • 无法连接到任何指定的 MySQL 主机

    问题就在这里 我正在尝试执行查询及其抛出和异常connection Open 奇怪的是 在同一个应用程序上我正在执行 选择 查询并且它工作正常 但是当我执行 更新 查询时 它会抛出 无法连接到任何指定的 MySQL 主机 错误 一直卡在这上
  • 如何在 nginx 中配置重定向到带有斜杠的 url?

    我想将不带斜杠的 URL 重定向到带尾部斜杠的路径 所以 一些 url to 一些网址 其余的 URL 例如 some url xml 某个网址 some url q v 一些网址 应该保持不变 我找到了这篇文章https www atea
  • Grails 自动重新加载新的控制器操作

    I ve 创建了新的 Grails 2 4 3 项目 created TestController set grails reload enabled true in BuildConfig groovy 运行应用程序grails relo
  • char 数组的问题 = char 数组

    I have char message1 100 char message2 100 当我尝试做的时候message1 message2 我收到错误 分配给类型时不兼容的类型 char 100 从类型 char 我有类似的功能 if sen
  • 用CSS按比例调整图像大小,可能吗?

    有没有办法用 CSS 调整图像大小并保持其比例 容器有固定的宽度和高度 div class container img class theimage src something div 我问的原因是因为布局可以改变 通过类从列表到图标 并且
  • 枚举对继承的支持

    我经常遇到这样的情况 我们创建一个作用于某些枚举的类 但后来我们派生并希望在不更改基类的情况下向枚举添加更多值 我在2009年就看到过这个问题 基枚举类继承 https stackoverflow com questions 644629
  • 使 XStream 忽略一个特定的私有变量

    我目前正在为其编写保存函数的类有一个小问题 我正在使用 XStream com thoughtworks xstream 通过 DOMDriver 将类序列化为 XML 该类看起来像这样 public class World private
  • 如何制作 ToolStripComboBox 来填充 ToolStrip 上的所有可用空间?

    ToolStripComboBox 放置在 ToolStripButton 后面 后面是另一个右对齐的工具条组合框 如何最好地将 ToolStripComboBox 设置为始终调整其长度以填充前后 ToolStripButton 之间的所有
  • Mapbox:仅当注释在屏幕上可见时才添加注释

    我将注释数据存储在 Firebase 的数据库中 我发现只要注释没有自定义视图 我就可以下载 10 000 个注释的数据并将这些注释添加到我的地图中 而不会出现太大的延迟 然而 对于我的应用程序 我需要使用自定义视图 每个注释视图都是由多个
  • 从 pandas 数据框中制作多个饼图(每一行一个)

    我有一个数据框 df 显示与各种业务类别相关的情绪 我的任务是创建饼图 显示每种业务类型的情绪百分比 因此 我需要在 matplotlib 中创建一个函数 该函数读取 Business 列 然后使用数据框中每行的每个情感类别构建饼图 我已经
  • Wear OS 和 iOS 配套应用程序之间的直接通信

    我目前有一个适用于 Android 和 iOS 智能手机的应用程序 我想将其引入 Wear OS 和 Watch OS 由于 Wear OS 智能手表也与 iOS 设备兼容 因此我正在寻找一种在 Watch OS 应用程序和 iOS 应用程
  • 在表格/班级之间共享信息[重复]

    这个问题在这里已经有答案了 我知道标题问题并不独特 并且有很多可用的消息 我打开一个线程的原因是我真的很难根据我的项目来理解这个问题 最近 我尝试启动 WinForm 以从 REST API 获取值 就像在 Form1 上进行开始测试一样