Bouton qui stoppe une action [Résolu]

Messages postés
32
Date d'inscription
mercredi 13 avril 2005
Dernière intervention
13 janvier 2009
- - Dernière réponse : kerma26
Messages postés
37
Date d'inscription
vendredi 11 mai 2007
Dernière intervention
20 août 2009
- 9 déc. 2008 à 09:47
Bonjour,

Je suis débutant en C# et j'ai une question concernant les evenements.

Pour faire simple disons qu'en appuyant sur un bouton je demarre un compteur et tant que je n'appuie pas sur un autre bouton le compteur ne s'arrete pas.
Voici le code que j'ai essayé d'implémenter mais il ne marche pas. Mais c'est plus la compréhension des evenements que la fonctionnalite qui m'interesse?

namespace

Project1{

public
partial
class
Form1 :
Form{

public
int cpt;

public
bool marche;

public Form1(){

InitializeComponent();

}

private
void button1_Click(
object sender,
EventArgs e){
marche true;cpt 1;

while (marche ==
true){

cpt = cpt+1;

textBox1.Text = cpt.ToString();

}

}

private
void button2_Click(
object sender,
EventArgs e){

marche =

false;}

}

Merci d'avance.
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
37
Date d'inscription
vendredi 11 mai 2007
Dernière intervention
20 août 2009
3
Merci
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cmoi%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5Cmoi%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso" />
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5Cmoi%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5Cmoi%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>FR</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0cm;
margin-right:0cm;
margin-bottom:10.0pt;
margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-fareast-language:EN-US;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-fareast-language:EN-US;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page Section1
{size:595.3pt 841.9pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tableau Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->

ah oui je
vois ce que tu veux faire, euh... oui donc là ça se complique un ptit peu qui
même <!--[if gte vml 1]><v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Image_x0020_1" o:spid="_x0000_i1025" type="#_x0000_t75"
alt="http://www.csharpfr.com/imgs2/smile_dead.gif" style='width:11.25pt;
height:11.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\DOCUME~1\moi\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.gif"
o:title="smile_dead"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->.

Donc là pour pouvoir afficher l'incrémentation de ton compteur va falloir
utiliser les "delegate", enfin moi c'est comme ça que je ferai.

Cela va permettre de déléguer notre incrémentation sans bloquer la fenêtre
sinon, on ne pourrait pas voir le résultat, la fenêtre resterai blanche comme
si elle avait buggé.

Donc pour cela je te donne un petit exemple :
//Cela va nous permettre de stopper notre delegate
asynchrone






private IAsyncResult ia = null;


//Notre delegate









private delegate void incrementationCpt();










private int cpt = 0;










//Bouton start qui démarre de cpt










private void buttonStart_Click(object sender,
EventArgs e)










{








     
//notre Thread qui lance l’incrementation du cpt











monCpt = new Thread(new ThreadStart(transit));











      monCpt.Start();










}










private void transit()










{










    while (true)










    {










        cpt++;










       
Thread.Sleep(500);








 
//Le delagate asynchrone qui va afficher le résultat à
chaque       incrementation











        ia =
this.BeginInvoke(new incrementationCpt(cptMethode));










    }










}










private void cptMethode()










{










   










    textBoxCpt.Text = cpt.ToString();










    textBoxCpt.Refresh();










  










}










private void buttonStop_Click(object sender, EventArgs
e)










{








   
//on arrete le thread











    monCpt.Abort();







   
//on arrete la delegate







    this.EndInvoke(ia);










}








voila j'espère que cela marchera et surtout que tu aura compris .




 

Merci kerma26 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de kerma26
Messages postés
357
Date d'inscription
jeudi 8 juin 2006
Dernière intervention
26 décembre 2011
0
Merci
Salut,
Renyone a raison c'est un problème classique
Tu devrais regarder de ce coté : Application.DoEvents
[http://msdn.microsoft.com/fr-fr/library/system.windows.forms.application.doevents%28VS.80%29.aspx [Lien]]
http://msdn.microsoft.com/fr-fr/library/system.windows.forms.application.doevents(VS.80).aspx
A+
Commenter la réponse de xmox667
Messages postés
1163
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
21 octobre 2010
0
Merci
eh les gars cest bien beau mais vous avez meme pas lu la question....faudrait ptetre voir a pas répondre a coté de la plaque...

Donc pour l'explication, un event, cest juste un appel a une fonction (enfin grosso modo...en fait ca peut etre un appel a plusieurs fonctions). Ce qui se passe dans ton application, cest qu'au click sur bouton1, tu lance une boucle infinie. donc le thread qui execute cet event est bloqué et ne peut rien executer d'autre. Or c'est le thread de ton ui, donc tu peux pas cliquer sur ton bouton. Pire, meme si tu pouvais cliquer, le code de button2_Click ne s'executerais pas car le thread est occupé. A partir de la, tu peux regarder les deux solutions proposées ci dessus (sachant que dans ton cas je te déconseille le DoEvents, pas vraiment fait pour ce genre de chose).
Donc pour ce que tu veux faire :
-utiliser invoke/begininvoke (cherche le tutoriel sur le site concernant les operations crossthread)
-utiliser l'objet backgroundworker (msdn)

Enfin, il y a de plus des chances que ton code ne fonctionne toujours pas (du moins en mode release) meme si tu passe le code de l'event associé au click sur le bouton 1 dans un thread.

En effet, en mode release, le compilo optimise ton code, et il est possible (j'ai pas dis que ca sera forcément le cas) qu'il remplace ton code par le pseudocode suivant :

bool var_locale = marche;
var_locale =true;
cpt = 1;
while (var_locale== true)
{
cpt = cpt+1;
textBox1.Text = cpt.ToString();
}
marche = var_locale


ceci n'est qu'un pseudo code, mais en gros l'idée du compilo c'est simplement d'éviter que tu accède a la RAM a chaque itération de la boucle, donc il fait une copie locale au processeur et n'accède a ta variable qu'une fois en début et une fois en fin de boucle. dans ce cas tu devras déclarer ta variable "marche" en tant que "volatile" (public volatile bool marche;)
Commenter la réponse de leprov
Messages postés
32
Date d'inscription
mercredi 13 avril 2005
Dernière intervention
13 janvier 2009
0
Merci
Salut,

j'ai essaye la methode Application.DoEvents() et elle marche execpte que pour stopper le compteur je dois cliquer "deux fois" sur le bouton stop. Le premier clique rien ne se passe (le bouton stoppe ne "s'enfonce pas" et la deuxieme fois c'est bon est ce parce que le bouton stop doit recuperer la main ??). Je vais essayer de passer par les evenements avec Invoke Begin Invoke mais je ne suis pas tres encore tres familier de cette programmation. Je mets quand meme mon ptit bout de prog qui fonctionne si ca peut eventuellement debloquer quelqu'un.

using

System;
using

System.Text;
using

System.Windows.Forms;
namespace

WindowsFormsApplication1{

public
partial
class
Form1 :
Form{

public
int cpt=0;

public
bool marche;

public Form1(){

InitializeComponent();

}

private
void button1_Click(
object sender,
EventArgs e){

marche=

true;

while (marche ==
true){

cpt = cpt + 1;

textBox1.Text = cpt.ToString();

Application.DoEvents();}

}

private
void button2_Click(
object sender,
EventArgs e){

marche =

false;}

}

}
Commenter la réponse de bibinutz
Messages postés
32
Date d'inscription
mercredi 13 avril 2005
Dernière intervention
13 janvier 2009
0
Merci
Salut,

J'ai vite regarde les fonctions Invoke begin et j'avoue avoir assez vite decroche. Je me suis rabattu lol sur le backgroundworker et j'ai presque le resultat souhaite. Je fais juste une magouille pour me creer une bouvle infinie. Si vous avez une idee pour remplacer le for par un while (condition). C'est la condition que je ne sais pas ecrire. En gros la condition c'est : tant que je n'ai pas appuye sur le bouton annuler.

Voici le code inspire de dadamagouil (http://www.csharpfr.com/codes/BACKGROUNDWORKER_44725.aspx)

namespace test_background{

public
partial
class
Form1 :
Form{

public Form1(){

InitializeComponent();

}

private
void bgwCode_ProgressChanged(
object sender,
ProgressChangedEventArgs e){

Int32 nombre = (
Int32)e.UserState;textBox1.Text = textBox1.Text +

Environment.NewLine + nombre.ToString();}

private
void bgwCode_DoWork(
object sender,
DoWorkEventArgs e){

BackgroundWorker notreworker = sender
as
BackgroundWorker;tache(notreworker, e);

}

private
void btn_demarrer_Click(
object sender,
EventArgs e){

bgwCode.RunWorkerAsync();

}

private
void tache(
BackgroundWorker worker,
DoWorkEventArgs e){

int i = 0;

int c = 0;

for (i=0;i<100;i++)
{

if (worker.CancellationPending){
e.Cancel true;e.Result 0;

return;}

c = c + 1;

worker.ReportProgress(i, c);

System.Threading.

Thread.Sleep(5);i = 0;

}

}

private
void btn_annuler_Click(
object sender,
EventArgs e)
{
bgwCode.CancelAsync();
}
}
}

Merci.
Commenter la réponse de bibinutz
Messages postés
37
Date d'inscription
vendredi 11 mai 2007
Dernière intervention
20 août 2009
0
Merci
Salut,

Moi à ta place j'aurais lancé le compteur dans un nouveau thread :
Thread mon_nouveau_thread = new thread(new threadstart(méthode_qui_demarre_le_cpt));
mon_nouveau_thrad.start();
Ce qui va démarrer ton compteur dans un nouveau thread donc ton thread principal, ta fenêtre et tes boutons seront accessible.
Donc tu déclare le Thread à la vue de toutes les méthode de ta classe et tu le démarre la ou tu veux que ton compteur se lance.
Ensuite reste à stopper le nouveau thread, pour ça dans ta méthode bouton arreter :
private ..... bouton_arreter()
{
    mon_nouveau_thread.abord();
}

voila bon y'aura surement des divergences dans la synthaxe du code mais bon dans les grosses lignes cela devré marcher.
Commenter la réponse de kerma26
Messages postés
32
Date d'inscription
mercredi 13 avril 2005
Dernière intervention
13 janvier 2009
0
Merci
Salut,

Thread mon_nouveau_thread = new thread(new threadstart(méthode_qui_demarre_le_cpt));
mon_nouveau_thrad.start();

Dans le code cidessus est ce que dans methode_qui_demarre_le_cpt je peux mettre par exemple la fonction gerant le clik du bouton demarrer ?

Merci
Commenter la réponse de bibinutz
Messages postés
37
Date d'inscription
vendredi 11 mai 2007
Dernière intervention
20 août 2009
0
Merci
lut,

Non, enfin pas directement car dans cette situation tu doit mettre une méthode "void" donc qui ne retourne rien, donc tu devras faire un petit détour (tout petit).
Donc...
Tu as ta méthode gérant le click du bouton :
private .... monbouton(event....)
{
     //ici tu lance ton thread qui va lancer une autre méthode (void)
     monThread = new thread(new threadstart(moncompteur));
     monThread.start();
}
//Méthode void qui incrémente le compteur
private void monCompteur()
{
     ...
     ctp++
     ...
}

Voila j'espère que tu comprendras mon charabia ;p.
Commenter la réponse de kerma26
Messages postés
32
Date d'inscription
mercredi 13 avril 2005
Dernière intervention
13 janvier 2009
0
Merci
Salut,

J'ai compris ton petit charabia lol; cependant si je veux recuperer la valeur de cpt et l'afficher dans une textbox comment je peux faire ? J'ai essaye de definir une variable globale mais cela ne marche pas. Et si je mets le code d'affichage dans la foncion moncompteur() j'ai un probleme de multicrossing.

Merci.
Commenter la réponse de bibinutz
Messages postés
37
Date d'inscription
vendredi 11 mai 2007
Dernière intervention
20 août 2009
0
Merci
re,

Donc pour récupérer ta variable cpt;
tu la déclare donc à la vue de toutes tes méthode cmme ceci :
private static int cpt = 0;
Cela permettra à ta variable d'une part d'être accessible dans ta classe et de plus cela permettra à ta variable de pas se remettre à zéro.

voila.
Commenter la réponse de kerma26
Messages postés
32
Date d'inscription
mercredi 13 avril 2005
Dernière intervention
13 janvier 2009
0
Merci
Re !

En fait je crois que la méthode que je veux utilisr ne peux pas marcher. Je souhaite que la valeur de cpt soit afficher tant que je n'ai pas cliquer sur le bouton arreter. Le probleme c'est que je ne peux pas ecrire textbox1.text=cpt.tostring() dans ma fonction methode_... Toujours le probleme de multicrossing.
Je regarderai plus en details demain mais merci de ton aide en tout cas ! J'ai vu que beaucoup de poste concernent mon probleme et qu'il y a plusieurs manieres de le regler (Application.DoEvents, BackgroundWorker...) mais à "froid" c'est assez complexe.
Si j'arrive à mener à bien mon prog j'essaierai de poster un message clair pour les very debutants comme moi lol.

Merci
Commenter la réponse de bibinutz
Messages postés
32
Date d'inscription
mercredi 13 avril 2005
Dernière intervention
13 janvier 2009
0
Merci
Re !

C'est bon ca marche avec la méthode des begininvoke ! Une derniere question : si par exemple je veux rajouter une autre tache style webcam il suffit de faire en gros :

bouton click2
{thread2 = new Thread(new ThreadStart(autre_tache));
thread2.Start();
}

private void autre_tache()
{
mon code pour la webcam
ia = this.BeginInvoke(new Nouveaudelegue(Affichage));
}

private void Affichage()
{
gestion affichage de la webcam
}

Mais la c'est bon j'ai compris encore un grand merci !
Commenter la réponse de bibinutz
Messages postés
37
Date d'inscription
vendredi 11 mai 2007
Dernière intervention
20 août 2009
0
Merci
Euh... oui enfin le beginInvoke() là c'était surtout pour pouvoir gérer notre textbox dans un autre Thread. Là c'était une textbox mais c'est le même principe pour une progressBar, listBox... après si tu veux juste executer du code juste un nouveau thread suffira.
Commenter la réponse de kerma26
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
-1
Merci
J'ai pas trop le temps là mais c'est un probleme classique des Winforms. Tu lances une opération (while (marche == true)) qui va bloquer le thread principal ==> ton application se freeze à mon avis.
Tu dois lancer cette methode de maniere asynchrone. va voir du cote des delegate, begininvoke etc.

A+
Commenter la réponse de renyone

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.