Call неоднозначен между следующими методами

1

Почему код снова и снова возвращает мне следующую ошибку:

Error 1 The call is ambiguous between the following methods or properties: 'reClientOnly_winforms.Form1.InitializeComponent()' and 'reClientOnly_winforms.Form1.InitializeComponent()'  

Код:

   namespace reClientOnly_winforms
   {
   public partial class Form1 : Form
   {
    System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();

    public Form1()
    {
        InitializeComponent();
    }
    private void InitializeComponent()
    {
        this.SuspendLayout();
        // 
        // Form1
        // 
        this.ClientSize = new System.Drawing.Size(284, 261);
        this.Name = "Form1";
        this.Load += new System.EventHandler(this.Form1_Load_1);
        this.ResumeLayout(false);

    }


    private void Form1_Load_1(object sender, EventArgs e)
    {

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

        msg("Client Started");

        clientSocket.Connect("127.0.0.1", 8888);

        label1.Text = "Client Socket Program - Server Connected ...";

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

        NetworkStream serverStream = clientSocket.GetStream();

        byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textBox2.Text + "$");

        serverStream.Write(outStream, 0, outStream.Length);

        serverStream.Flush();



        byte[] inStream = new byte[10025];

        serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);

        string returndata = System.Text.Encoding.ASCII.GetString(inStream);

        msg(returndata);

        textBox2.Text = "";

        textBox2.Focus();

    }

    public void msg(string mesg)
    {

        textBox1.Text = textBox1.Text + Environment.NewLine + " >> " + mesg;

     }

   }
 }

EDIT: взято из Form1.Designer.cs

      private void InitializeComponent()
    {
        this.label1 = new System.Windows.Forms.Label();
        this.textBox1 = new System.Windows.Forms.TextBox();
        this.textBox2 = new System.Windows.Forms.TextBox();
        this.label2 = new System.Windows.Forms.Label();
        this.label3 = new System.Windows.Forms.Label();
        this.textBox3 = new System.Windows.Forms.TextBox();
        this.SuspendLayout();
        // 
        // label1
        // 
        this.label1.AutoSize = true;
        this.label1.Location = new System.Drawing.Point(85, 9);
        this.label1.Name = "label1";
        this.label1.Size = new System.Drawing.Size(35, 13);
        this.label1.TabIndex = 0;
        this.label1.Text = "label1";
        // 
        // textBox1
        // 
        this.textBox1.Location = new System.Drawing.Point(88, 68);
        this.textBox1.Name = "textBox1";
        this.textBox1.Size = new System.Drawing.Size(297, 20);
        this.textBox1.TabIndex = 1;
        // 
        // textBox2
        // 
        this.textBox2.Location = new System.Drawing.Point(88, 197);
        this.textBox2.Name = "textBox2";
        this.textBox2.Size = new System.Drawing.Size(297, 20);
        this.textBox2.TabIndex = 2;
        // 
        // label2
        // 
        this.label2.AutoSize = true;
        this.label2.Location = new System.Drawing.Point(85, 154);
        this.label2.Name = "label2";
        this.label2.Size = new System.Drawing.Size(35, 13);
        this.label2.TabIndex = 3;
        this.label2.Text = "label2";
        // 
        // label3
        // 
        this.label3.AutoSize = true;
        this.label3.Location = new System.Drawing.Point(96, 42);
        this.label3.Name = "label3";
        this.label3.Size = new System.Drawing.Size(35, 13);
        this.label3.TabIndex = 4;
        this.label3.Text = "label3";
        // 
        // textBox3
        // 
        this.textBox3.Location = new System.Drawing.Point(273, 272);
        this.textBox3.Name = "textBox3";
        this.textBox3.Size = new System.Drawing.Size(100, 20);
        this.textBox3.TabIndex = 5;
        // 
        // Form1
        // 
        this.ClientSize = new System.Drawing.Size(432, 316);
        this.Controls.Add(this.textBox3);
        this.Controls.Add(this.label3);
        this.Controls.Add(this.label2);
        this.Controls.Add(this.textBox2);
        this.Controls.Add(this.textBox1);
        this.Controls.Add(this.label1);
        this.Name = "Form1";
        this.Load += new System.EventHandler(this.Form1_Load_1);
        this.ResumeLayout(false);
        this.PerformLayout();

    }

У меня была такая же проблема, поэтому я создал новый проект, чтобы решить проблему (ранее это было в Form1.Designer.cs).

Как обойти это? Я видел это, но не был окончательным

  • 0
    Вам нужно предоставить короткий, но полный код, воспроизводящий проблему, чтобы получить ответ.
  • 1
    что находится в вашем другом partial class Form1 (s)?
Показать ещё 6 комментариев
Теги:
winforms
sockets

2 ответа

3
Лучший ответ

Вы не можете использовать TWO InitializeComponent()

InitializeComponent - это метод, автоматически написанный для вас конструктором форм при создании/изменении форм.

Поэтому вы не можете написать метод с именем InitializeComponent() и вызвать его, чтобы компилятор не понял "какой метод" для выбора

Что ты можешь сделать

public Form1()
{
    InitializeComponent();
}
private void Re_InitializeComponent()
{
    InitializeComponent();
    this.SuspendLayout();
    // 
    // Form1
    // 
    this.ClientSize = new System.Drawing.Size(284, 261);
    this.Name = "Form1";
    this.Load += new System.EventHandler(this.Form1_Load_1);
    this.ResumeLayout(false);

}

И когда вы хотите сделать то, что хотите, вызовите Re_InitializeComponent() в этой функции. Следующим образом

 public void YourCalling(){
   Re_InitializeComponent();
 }

p. s- Я тестировал это в одном из моих проектов. он дает минимальную версию того же макета, и я предполагаю, что то, что вы ожидаете

  • 0
    Если у него есть два метода, он получит другую ошибку. Тип «NameSpace.YourTyeName» уже определяет член с именем «InitializeComponent» с теми же типами параметров
  • 0
    вау, вот как ты делаешь простые вещи сложными.
3

Класс Form1 является частичным, другая часть класса находится в файле Form1.Designer.cs. У вас есть InitializeComponent() в вашей Form1, а в Form1.Designer.cs есть еще один. Попробуйте удалить его в Form1 и поместить весь его контент в Form1.Designer.cs

  • 1
    Если у него есть два метода, он получит другую ошибку. Тип «NameSpace.YourTyeName» уже определяет член с именем «InitializeComponent» с теми же типами параметров
  • 0
    Я не вижу такого упрощенного решения этого вопроса !!! @omikad
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню