Cuestión : CONTRA C# 2008 hacer No-Modal para comportarse como modal

Estoy desarrollando un winform que trabaje de un uso que tenga a CONTRA juego de herramientas. Creé todas mis formas pues las formas modales como quiero el proceso a transferir a la forma llamada mientras que esa forma está abierta. He descubierto que hay un insecto en ese juego de herramientas cuando viene a las formas modales. (los heladas de la pantalla apenas). Me han dicho para utilizar formas no-modales y después para controlar acontecimientos para hacer que una forma no-modal se comporta como una forma modal. Mi pregunta es deben qué acontecimientos monitor de I así que el usuario no puede dejar la forma hasta cualquier botones acuciantes en esa forma que permitan que se vayan. He incluido el código completo abajo. Esta edición subió con el acontecimiento atado a un datadridviewButtonCollumn que agregué que permite a usuario a los números de trabajo de las operaciones de búsqueda (frmLookupJob). class= > " claro " 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 de e.ColumnIndex)
            {

                    el usar (frmLookupJob ViewAgenciesByJobsForm = nuevo frmLookupJob ())
                    {
                        si == DialogResult.OK (de ViewAgenciesByJobsForm.ShowDialog (éste))
                            dgvViewJobLinker [1, dgvViewJobLinker.CurrentCell.RowIndex]. Valor = ViewAgenciesByJobsForm.CellValue;
                    }  
            }
        }
        }
    }
==============================================================
VENTANA DE LAS OPERACIONES DE BÚSQUEDA
==============================================================
usar sistema;
usar System.Collections.Generic;
usar System.ComponentModel;
usar System.Data;
usar System.Data.SqlClient;
usar System.Drawing;
usar System.IO;
usar System.Text;
usar System.Windows.Forms;
usar Microsoft.Dexterity.Bridge;
usar Microsoft.Dexterity.Applications;
usar Microsoft.Dexterity.Shell;

namespace PopulateJobLinkerRTE
{
    frmLookupJob parcial público de la clase: DexUIForm
    {
        
        /* definen una variable de secuencia para sostener la secuencia de la conexión *
        secuencia ConnectionString;

        /* definen las variables usadas en búsqueda de secuencia *
        strSearch = "" de la secuencia;
        internacional i;

        Gestores de conexión del SQL de la disposición de/* *
        System.Data.SqlClient.SqlConnection privado DataConnection;
        System.Data.DataSet privado DataDataSet;
        System.Data.SqlClient.SqlCommand privado DataCommand;
        System.Data.SqlClient.SqlDataAdapter privado DataDataAdapter;
        secuencia pública CellValue {conseguir; sistema; }
      
        frmLookupJob público ()
        {
            InitializeComponent ();
                                  
            intento
            {
                SqlConnection DataConnection = GetConnection ();

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

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

                DataCommand.CommandText = “JOBNUMBER SELECTO, AGENCIA de la ORDEN de TRABAJOS POR JOBNUMBER”;

                DataDataAdapter = nuevo System.Data.SqlClient.SqlDataAdapter ();
                DataDataAdapter.SelectCommand = DataCommand;
                DataDataAdapter.TableMappings.Add (“tabla”, “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]. Anchura = 85;
                dgvAgenciesByJobs.Columns [0] .HeaderText = “número de trabajo”;
                dgvAgenciesByJobs.Columns [0] .ReadOnly = verdad;
                dgvAgenciesByJobs.Columns [1]. Anchura = 95;
                dgvAgenciesByJobs.Columns [1] .HeaderText = “código de la agencia”;
                dgvAgenciesByJobs.Columns [1] .ReadOnly = verdad;

            }
            retén (excepción ex)
            {
                MessageBox.Show (ex. Mensaje);
            }
                   
        }
        
        btnExit_Click vacío privado (remitente del objeto, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
            DataConnection.Close ();
            esto. Cierre ();
            vuelta;
        }

        SqlConnection privado GetConnection ()
        {
            /* crean el lector y el archivo abierto que contienen la secuencia de la conexión *
            TextReader tr = nuevo StreamReader (@ " dinámica \ GP \ Addins \ GSE2000.INI de C:\Program Files\Microsoft ");

            /* leyó la línea que contenía la secuencia de la conexión *
            ConnectionString = tr.ReadLine ();

            /* cierran la corriente *
            tr. Cierre ();

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

            DataConnection de vuelta;
        }

        dgvAgenciesByJobs_DoubleClick vacío privado (remitente del objeto, EventArgs e)
        {
            internacional CurrentRow;

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

            DataConnection.Close ();
            esto. Cierre ();
            vuelta;

        }

        dgvAgenciesByJobs_KeyPress vacíos privados (remitente del objeto, KeyPressEventArgs e)
        {
            strSearch += e.KeyChar;

            si (== de e.KeyChar (carbón de leña) Keys.Back)
            {
                si (strSearch.Length > 0) strSearch = strSearch.Substring (0, strSearch.Length - 2);
            }

            para (i = 0; i <= dgvAgenciesByJobs.RowCount - 1; i++)
            {
                si (dgvAgenciesByJobs [0, i]. ¡Valor! = dgvAgenciesByJobs nulos del && [0, i]. Value.ToString () .StartsWith (strSearch.ToUpper ()))
                {
                    dgvAgenciesByJobs.Rows [i]. Seleccionado = verdad;
                    dgvAgenciesByJobs.CurrentCell = dgvAgenciesByJobs [0, i];
                    si (dgvAgenciesByJobs.Rows [i]. == exhibido falso)
                    {
                        dgvAgenciesByJobs.FirstDisplayedScrollingRowIndex = i;
                    }
                    vuelta;
                }
            }        
        }
    }
    
}
class= del

Respuesta : CONTRA C# 2008 hacer No-Modal para comportarse como modal

(En el acceso VBA del ms) para fijar el foco sobre cualesquiera abrir la forma, el sintaxis es:

   ¡Formas! YourFormName.SetFocus

Esperar que esto ayude también.

; -)

JeffCoachman
Otras soluciones  
 
programming4us programming4us