Gun Gun Febrianza Ответов: 1

Форма для связи - отправка и получение данных.


У меня есть две формы, одна из которых называется IDE, а вторая-CodeEditor.
Это мой код в конструкторе :

private CodeEditor FCodeEditor;
public IDE()
        {
InitializeComponent();
FCodeEditor = new CodeEditor(this);
}

//this is method to get string from form CodeEditor

string ILPcodes;
        public string ILPCodes(string codes)
        {
            ILPcodes = codes;
            return ILPcodes;
        }

//then i try to call method signalActiveTheLexer from form code editor to return the string to ILPcodes variable.

public void lex()
{
            FCodeEditor.signalActiveTheLexer();

            //Lexing
            adaptiveILPLexer(ILPcodes);
}


Это конструктор для формы CodeEditor :

private IDE SendToIDE;
        public CodeEditor(IDE MainForm)
        {
            SendToIDE = MainForm;
        }

//this is the method that i wish can return the code from codeeditor control
public void signalActiveTheLexer()
        {
            SendToIDE.ILPCodes(CodeEditorControl.Text);
        }


проблема в том, что я всегда получаю нулевой результат? почему? я меняю codeeditorcontrol на textbox1. text результат по-прежнему нулевой. если я использую этот трюк от формы к классу для взаимодействия, то результат всегда успешен, но форма к форме я получаю проблему

Что я уже пробовал:

я прочитал эту статью, но не вижу, как решить свою проблему..
пытался узнать о делегате, конструкторе, свойствах..

Передача Данных Между Формами[^]

1 Ответов

Рейтинг:
1

Richard MacCutchan

У вас есть следующий метод:

public string ILPCodes(string codes)
{
    ILPcodes = codes;
    return ILPcodes;
}

который возвращает строку.

Однако когда вы вызываете его signalActiveTheLexer
public void signalActiveTheLexer()
{
    SendToIDE.ILPCodes(CodeEditorControl.Text);
}

вы не фиксируете возвращаемое значение, и даже если бы вы это сделали, этот метод ничего не возвращает. Вы должны изменить его следующим образом:
public string signalActiveTheLexer()
{
    return SendToIDE.ILPCodes(CodeEditorControl.Text);
}


Gun Gun Febrianza

тем не менее я получаю нулевую ссылку :(

я использовал эту потрясающую библиотеку (y)
используя WeifenLuo.WinFormsUI.Стыковка;

Gun Gun Febrianza

проблема решена ! я забыл добавить

метод InitializeComponent();

внутри конструктора codeeditor XD