Проблема в типах ваших переменных.
Questions:
, p1
, p2
и p3
относятся к типу str
.
И наоборот, q1
, q2
и q3
относятся к типу int
.
Вызовы print
работают отдельно, потому что print
может преобразовать свои аргументы в str
. Однако сначала вы пытаетесь добавить две строки (p1
и Questions:
) в int
(q2
), что не помогает.
Вместо наивного сложения / объединения следует предпочесть str.format
вызовов:
print('{p} Questions: {q}'.format(p=p1, q=q1))
Это облегчает понимание того, как будет выглядеть строка, и автоматически выполняет преобразование ваши аргументы.
( изменить - я думаю, что я неправильно понял исходный вопрос)
Просто сделайте это Метод вместо свойства:
public void DoSomething(string foo, int bar)
{
if (this.InvokeRequired) {
this.Invoke((MethodInvoker)delegate {
DoSomething(foo,bar);
});
return;
}
// do something with foo and bar
this.Text = foo;
Console.WriteLine(bar);
}