У меня есть три класса, и код приведен ниже.Этот открытый метод C# не возвращает значение
Сеть - добавление и удаление телефона, обработка вызовов. Phone1 и Phone2 могут звонить друг другу при добавлении в сеть.
Но у меня проблема, когда я соединяю телефон с сетью и пытаюсь позвонить phone1 на телефон2; он продолжает давать мне «приемник занят». Я попытался сделать небольшую отладку и прочитать статус телефона2 при вызове с телефона1, но он возвращает пустую строку (которая должна фактически вернуть «А», когда она добавляется в сеть, поскольку я устанавливаю ее значение в «А «).
public partial class network : Form
{
phone1 p1 = new phone1();
phone2 p2 = new phone2();
public network()
{
InitializeComponent();
}
public Boolean numberValidator(int number)
{
Boolean exist = false;
if (comboBox2.Items.Equals(number))
{
exist = true;
}
return exist;
}
public void processCall(int rNumber)
{
if (!numberValidator(rNumber))
{
p1.TextBox1.Clear();
p1.TextBox1.Text = "Not connected";
}
else
{
p1.TextBox1.Clear();
p1.TextBox1.Text = "Call in progress";
p2.receiveCall(1);
p1.setStatus("Busy");
/*
if (p2.btnCallPressStatus())
{
p1.TextBox1.Clear();
p1.TextBox1.Text = "Call initiated";
}*/
}
}
private void button1_Click(object sender, EventArgs e)
{
if (comboBox1.SelectedIndex == 0)
{
p1.Show();
comboBox2.Items.Add(1);
p1.setStatus("A");
}
if (comboBox1.SelectedIndex == 1)
{
p2.Show();
comboBox2.Items.Add(2);
p2.setStatus("A");
}
}
}
---------- Phone1 Класс ---------
public partial class phone1 : Form
{
public phone1()
{
InitializeComponent();
}
string status;
public void setStatus(string Status)
{
status = Status;
}
public string returnStatus()
{
return status;
}
public void receiveCall(int callerNumber)
{
setStatus("Busy");
btnCall.Text = "Answer";
textBox1.Text = "Phone " + callerNumber + " Calling.";
}
public void makeCall(int number)
{
phone2 p2 = new phone2();
network net = new network();
MessageBox.Show(p2.returnStatus()); // this line not returing status of phone2
if (p2.returnStatus() == "A")
{
net.processCall(number);
}
else
{
textBox1.Text = "Receiver Busy";
}
}
public TextBox TextBox1
{
get
{
return textBox1;
}
}
private void btnCall_Click(object sender, EventArgs e)
{
string number = textBox1.Text;
int numberInt = Convert.ToInt16(number);
makeCall(numberInt);
}
string phoneNo = "";
private void btn2_Click(object sender, EventArgs e)
{
phoneNo = phoneNo + btn2.Text;
textBox1.Text = phoneNo;
}
}
------------- phone2 Класс --------------
public partial class phone2 : phone1
{
public phone2()
{
InitializeComponent();
}
}
Я отредактировал вопрос, чтобы очистить код, но вам было бы полезно отредактировать его дальше, чтобы удалить любой код, не имеющий отношения к проблеме. Большинство людей не хотят копать всю программу, чтобы найти, где эта проблема. См. [Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve) – TheEvilPenguin
Где вы ожидаете, что 'p2.Status' будет установлен в 3 строках между его созданием и показом положение дел? Конструктор не устанавливает его. Вы явно не устанавливаете его в 'makeCall'. – Blorgbeard