显示新表单不起作用

时间:2017-10-08 08:40:26

标签: c# winforms

我正在研究这几天。现在我有另一个问题。所以我在zzz.cs

中有这个
private void button3_Click_1(object sender, EventArgs e)
{
    scraper zzz = new scraper();
    zzz.Show();
}

由于一个原因,它不想打开名为scraper.cs的其他窗体。我的zzz.csscraper.cs具有相同的命名空间。这怎么可能不起作用?什么是修复?

编辑:

问题已解决,但现在从login.cs它没有去zzz.cs.我的代码是:

    MessageBox.Show("You are logged in successfully");
    zzz zzz = new zzz();
    zzz.Show();
    this.Close();

但现在不行。如何解决?在它运作之前,现在不再......

我再试一次。我看到zzz.cs打开了。然后direclty关闭代码:0。这是我的zzz.cs:

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace Login
{
    public partial class zzz : Form
    {
        public static List<string> proxies { get; set; } = new List<string>();
        public static List<string> Links { get; set; } = new List<string>();
        public static string path;
        public zzz()
        {
            InitializeComponent();
        }
        private void button1_Click_1(object sender, EventArgs e)
        {
            Logs.Items.Clear();
            if (radioButton1.Checked == true)
            {
                bool useproxies = true;
                Logs.Items.Add("Using proxies enabled!");
                scrape();
            }
            else
            {
                bool useproxies = false;
                Logs.Items.Add("Using proxies disabled!");
            }
            void scrape ()
            {
                int omg = proxyscraper();
            }
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        public int proxyscraper()
        {
            return 0;
        }

        private void button3_Click_1(object sender, EventArgs e)
        {
            //Form1 aaa = new Form1();
            //aaa.Show();
        }
    }
}

这是我的inlogin.cs:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Login
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();

        }
        //Enter code here for your version of username and userpassword
        Login login = new Login("admin", "1234");


        private void button1_Click(object sender, EventArgs e)
        {
            //define local variables from the user inputs
            string user = nametxtbox.Text;
            string pass = pwdtxtbox.Text;
            //check if eligible to be logged in

            string login(string lol,string lel)
            {
                try
                {
                    var request = (HttpWebRequest)WebRequest.Create("http://SNIP/mama.php?user=" + lol + "&password=" + lel);
                    var response = (HttpWebResponse)request.GetResponse();
                    string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
                    return responseString;
                }
                catch
                {
                    string responseString = "NO";
                    return responseString;
                }
            }
            string wat = "YES";
            if (login(user, pass) == wat)
            {
                MessageBox.Show("You are logged in successfully");
                zzz aaa = new zzz();
                aaa.Show();
                this.Close();
            }
            else
            {
                //show default login error message
                MessageBox.Show("Login Error!");
            }
        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void label1_Click(object sender, EventArgs e)
        {

        }
    }
}

... Howwww

1 个答案:

答案 0 :(得分:1)

您是否尝试过编译代码?它不应该这样做。

一个原因是您正在混合文件名itselve和类名。这是不同的名字。

您必须创建班级的实例。在这种情况下,您的表单使用其构造函数。

private void button3_Click_1(object sender, EventArgs e)
{
    Form1 aaa = new Form1()
    aaa.Show();
}

您还可以将班级Form1重命名为Scrapper并致电

private void button3_Click_1(object sender, EventArgs e)
{
    Scrapper aaa = new Scrapper()
    aaa.Show();
}

回答你的编辑

您正在使用zzz.Show(),只会打开zzzthis.Close();的非模态对话框 在click方法中执行下一个方法。这是zzz。这将关闭您当前的登录表单,这也会关闭您的zzz.ShowDialog();。您可以使用zzz打开this.Close();。现在登录对话框正在等待&#39;直到你的sxrapper对话框关闭。之后,登录屏幕会通过调用Main来关闭。

我建议您更改申请流程。 首先打开您的登录屏幕,然后在成功结束后打开你的刮板。

例如,您可以将Program文件中的Program.cs课程中的static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var loginForm = new YourLoginDialog(); var result = YourLoginDialog.ShowDialog(); if (result == DialogResult.Yes) { Application.Run(new Scrapper()); } else { MessageBox.Show("Login failed"); } } 方法更改为:

button3_Click_1

如果它仍无法正常工作:

检查您的button3是否与F4相关联。 您可以通过多种方式执行此操作,但常见的方法是使用VisualStudio的属性窗口,按button3选择bolt并选择button3_Click_1 /事件选项卡并选择点击事件的InitializeComponent();方法 或者在调用this.button3.Click += new System.EventHandler(this.button3_Click_1);

之后将以下行添加到构造函数中
Scrapper

通过上述评论回答您的问题:

  

scraper是Windows Form idk如何找到它

由于类定义中的 Form1 ,您的System.Windows.Forms.Form: Form)类会继承public partial class Form1 : Form { // ... }

ensureIndex()

也许你应该看看Classes and Structs (C# Programming Guide)