Questione : CONTRO C# 2008 rendere Non-Modale per comportarsi come modale

Sto sviluppando un winform che funziona fuori da un'applicazione che ha a CONTRO la borsa degli arnesi. Ho generato tutte le mie forme poichè forme modali come voglio l'elaborazione da trasferire alla forma denominata mentre quella forma è aperta. Ho scoperto che ci è un insetto in quella borsa degli arnesi quando viene alle forme modali. (le gelate dello schermo appena). Sono stato detto per usare le forme non-modali ed allora per controllare gli eventi per fare una forma non-modale comportarmi come una forma modale. La mia domanda è quali eventi devono monitor di I in modo da l'utente non può lasciare la forma fino ad i uni o i altri tasti prementi su quella forma che li permettono di andare. Ho compreso il codice completo qui sotto. Questa edizione ha fornito l'evento legato ad un datadridviewButtonCollumn che ho aggiunto che permette l'utente ai numeri di lavoro di occhiata (frmLookupJob). class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
>============================================================= notpretty " del class= " del id= " codeSnippet818596 del
= 0 del && e.RowIndex del == 0 di e.ColumnIndex)
            {

                    usando (frmLookupJob ViewAgenciesByJobsForm = nuovo frmLookupJob ())
                    {
                        se (== DialogResult.OK di ViewAgenciesByJobsForm.ShowDialog (questo))
                            dgvViewJobLinker [1, dgvViewJobLinker.CurrentCell.RowIndex]. Valore = ViewAgenciesByJobsForm.CellValue;
                    }  
            }
        }
        }
    }
==============================================================
FINESTRA DI OCCHIATA
==============================================================
using il sistema;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Text;
using System.Windows.Forms;
using Microsoft.Dexterity.Bridge;
using Microsoft.Dexterity.Applications;
using Microsoft.Dexterity.Shell;

namespace PopulateJobLinkerRTE
{
    frmLookupJob parziale pubblico del codice categoria: DexUIForm
    {
        
        /* definiscono una variabile di stringa per tenere la stringa del collegamento */
        stringa ConnectionString;

        /* definiscono le variabili utilizzate nella ricerca di stringa */
        strSearch = "" della stringa;
        int i;

        Alimentatori di collegamento di SQL di messa a punto di/* */
        System.Data.SqlClient.SqlConnection riservato DataConnection;
        System.Data.DataSet riservato DataDataSet;
        System.Data.SqlClient.SqlCommand riservato DataCommand;
        System.Data.SqlClient.SqlDataAdapter riservato DataDataAdapter;
        stringa pubblica CellValue {ottenere; insieme; }
      
        frmLookupJob pubblico ()
        {
            InitializeComponent ();
                                  
            prova
            {
                SqlConnection DataConnection = GetConnection ();

                DataDataSet = nuovo System.Data.DataSet ();
                DataDataSet.CaseSensitive = falso;

                DataCommand = nuovo System.Data.SqlClient.SqlCommand ();
                DataCommand.Connection = DataConnection;

                DataCommand.CommandText = “JOBNUMBER PRESCELTO, AGENZIA da ORDINE di LAVORI da JOBNUMBER„;

                DataDataAdapter = nuovo System.Data.SqlClient.SqlDataAdapter ();
                DataDataAdapter.SelectCommand = DataCommand;
                DataDataAdapter.TableMappings.Add (“Tabella„, “AgenciesByJobs„);
                DataDataAdapter.Fill (DataDataSet);

                dgvAgenciesByJobs.ReadOnly = falso;
                dgvAgenciesByJobs.RowHeadersVisible = falso;
                dgvAgenciesByJobs.AllowUserToResizeColumns = falso;
                dgvAgenciesByJobs.AllowUserToResizeRows = falso;

                dgvAgenciesByJobs.DataSource = DataDataSet.Tables [“AgenciesByJobs„] .DefaultView;
                dgvAgenciesByJobs.Columns [0]. Larghezza = 85;
                dgvAgenciesByJobs.Columns [0] .HeaderText = “numero di lavoro„;
                dgvAgenciesByJobs.Columns [0] .ReadOnly = allineano;
                dgvAgenciesByJobs.Columns [1]. Larghezza = 95;
                dgvAgenciesByJobs.Columns [1] .HeaderText = “codice dell'agenzia„;
                dgvAgenciesByJobs.Columns [1] .ReadOnly = allineano;

            }
            fermo (eccezione ex)
            {
                MessageBox.Show (ex. Messaggio);
            }
                   
        }
        
        btnExit_Click vuoto riservato (mittente dell'oggetto, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
            DataConnection.Close ();
            ciò. Fine ();
            ritorno;
        }

        SqlConnection riservato GetConnection ()
        {
            /* generano il lettore e la lima aperta che contengono la stringa del collegamento */
            TextReader TR = nuovo StreamReader (@ " dinamica \ GP \ Addins \ GSE2000.INI di C:\Program Files\Microsoft ");

            /* ha letto la linea che contiene la stringa del collegamento */
            ConnectionString = tr.ReadLine ();

            /* chiudono il flusso */
            TR. Fine ();

            DataConnection = nuovo System.Data.SqlClient.SqlConnection (ConnectionString);
            DataConnection.Open ();

            DataConnection di ritorno;
        }

        dgvAgenciesByJobs_DoubleClick vuoto riservato (mittente dell'oggetto, EventArgs e)
        {
            int CurrentRow;

            CurrentRow = dgvAgenciesByJobs.CurrentCell.RowIndex;
            dgvAgenciesByJobs.CurrentCell = dgvAgenciesByJobs [0, CurrentRow];
            CellValue = dgvAgenciesByJobs.CurrentCell.Value.ToString ();
            DialogResult = DialogResult.OK;
            strSearch = "";

            DataConnection.Close ();
            ciò. Fine ();
            ritorno;

        }

        dgvAgenciesByJobs_KeyPress vuoti riservati (mittente dell'oggetto, KeyPressEventArgs e)
        {
            strSearch += e.KeyChar;

            se (== di e.KeyChar (carbone) Keys.Back)
            {
                se (strSearch.Length > 0) strSearch = strSearch.Substring (0, strSearch.Length - 2);
            }

            per (i = 0; i <= dgvAgenciesByJobs.RowCount - 1; i++)
            {
                se (dgvAgenciesByJobs [0, i]. Valore! = dgvAgenciesByJobs nulli del && [0, i]. Value.ToString () .StartsWith (strSearch.ToUpper ()))
                {
                    dgvAgenciesByJobs.Rows [i]. Selezionato = allineare;
                    dgvAgenciesByJobs.CurrentCell = dgvAgenciesByJobs [0, i];
                    se (dgvAgenciesByJobs.Rows [i]. == visualizzato falso)
                    {
                        dgvAgenciesByJobs.FirstDisplayedScrollingRowIndex = i;
                    }
                    ritorno;
                }
            }        
        }
    }
    
}
class= del

Risposta : CONTRO C# 2008 rendere Non-Modale per comportarsi come modale

(Nell'accesso VBA del ms) per regolare il fuoco su c'è ne aprire la forma, la sintassi è:

   Forme! YourFormName.SetFocus

Sperare che questo aiuti pure.

; -)

JeffCoachman
Altre soluzioni  
 
programming4us programming4us