Question

Je fais

static bool isWorking
    {
        get { return _isWorking; }
        set {
            myform.treeView1.Enabled = !value;
            _isWorking = value;
        }
    }

et pas à pas à travers le débogueur montre qu'il arrête à la première ligne de consigne. Après avoir essayé cette ligne à la place

set { myform.treeView1.Enabled = !(_isWorking = value); }

Je vois que isWorking est défini, mais myform.treeView1.Enabled n'est pas. Ce qui se passe?

Était-ce utile?

La solution

Que voulez-vous dire par « le débogueur montre qu'il arrête »? Est-il possible que myform est nulle, ou myform.treeView1 est nulle?

Je ne me souviens pas exactement ordre d'évaluation dans ce cas, mais il pourrait expliquer les symptômes que vous décrivez. Savoir pourquoi le débogueur « arrête » est cruciale si. Une autre possibilité est que vous essayez d'accéder à l'interface d'un fil non-UI, ce qui empêcherait la cession à Enabled de fonctionner correctement.

Oh, et s'il vous plaît ne pas utiliser votre deuxième version - affectation comme effet secondaire est très, très rarement une bonne idée. L'utilisation que je sais est idiomatiques lors de la boucle avec IO:

string line;
while ( (line = reader.ReadLine()) != null)

et je considère seulement acceptable parce qu'il est raisonnablement commun. Dans ce cas, il ressemble vraiment vous peut signifie "==" au lieu de "=".

Autres conseils

Parce que (_isWorking = valeur) retourne toujours vrai. Si vous écrivez:

myform.treeView1.Enabled = !(_isWorking == value);

Il fonctionne comme: si isWorking est égale à la valeur puis désactivez treeView. Mais en vous cas - pas

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top