Fråga : VS C# 2008 gör Non-Modal för att uppföra som Modal

Förmiddag som I framkallar en winform som fungerar av en applikation, som har a VS verktygslåda. Jag skapade allt mitt bildar så modal bildar, som jag önskar att bearbeta som ska överföras till kallad, bildar stunder som bildar är öppna. Jag har upptäckt att det finns en verktygslåda för bugga däri, när det kommer till modal bildar. (för avskärma frysningarna precis). Jag har berättats för att använda non-modal bildar och kontrollerar därefter händelser för att göra ettmodal att bilda uppför något liknande som ett modal bildar. Mitt ifrågasätta är vilka händelser måste mig övervaka så användaren inte kan lämna bilda, tills either tränga knäppas på det bildar som låter dem lämna. Jag har inklusive det färdigt att kodifiera nedanfört. Detta utfärdar kom upp med händelsen som binds till en datadridviewButtonCollumn tillfogad I som låter användaren till referensjobbet numrerar (frmLookupJob). > för
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:
" codeBody " " >============================================================= för class= " för = 0 för && e.RowIndex för e.ColumnIndex-== 0) { använda (frmLookupJob ViewAgenciesByJobsForm = ny frmLookupJob ()) { om, == DialogResult.OK (för ViewAgenciesByJobsForm.ShowDialog (denna)) dgvViewJobLinker [1, dgvViewJobLinker.CurrentCell.RowIndex]. Värdera = ViewAgenciesByJobsForm.CellValue; } } } } } ============================================================== REFERENSFÖNSTER ============================================================== using system; 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 { offentligt partiskt klassificerar frmLookupJob: DexUIForm { /* definierar en strängavariabel för att rymma anslutningen stränger * stränga ConnectionString; /* definierar variabler som in används, stränger sökande * stränga strSearch = ""; int i; /* ställer in SQL-anslutningsförlagehanterare * privat System.Data.SqlClient.SqlConnection DataConnection; privat System.Data.DataSet DataDataSet; privat System.Data.SqlClient.SqlCommand DataCommand; privat System.Data.SqlClient.SqlDataAdapter DataDataAdapter; allmänhet stränger CellValue {få; uppsättning; } offentlig frmLookupJob () { InitializeComponent (); försök { SqlConnection DataConnection = GetConnection (); DataDataSet = ny System.Data.DataSet (); DataDataSet.CaseSensitive = falskt; DataCommand = ny System.Data.SqlClient.SqlCommand (); DataCommand.Connection = DataConnection; DataCommand.CommandText = ”VALD JOBNUMBER, BYRÅ FRÅN JOBB BESTÄLLER VID JOBNUMBER”; DataDataAdapter = ny System.Data.SqlClient.SqlDataAdapter (); DataDataAdapter.SelectCommand = DataCommand; DataDataAdapter.TableMappings.Add (”bordlägga”, ”AgenciesByJobs”); DataDataAdapter.Fill (DataDataSet); dgvAgenciesByJobs.ReadOnly = falskt; dgvAgenciesByJobs.RowHeadersVisible = falskt; dgvAgenciesByJobs.AllowUserToResizeColumns = falskt; dgvAgenciesByJobs.AllowUserToResizeRows = falskt; dgvAgenciesByJobs.DataSource = DataDataSet.Tables [”AgenciesByJobs”] .DefaultView; dgvAgenciesByJobs.Columns [0]. Bredd = 85; dgvAgenciesByJobs.Columns [0] .HeaderText = ”jobbet numrerar”; dgvAgenciesByJobs.Columns [0] .ReadOnly = true; dgvAgenciesByJobs.Columns [1]. Bredd = 95; dgvAgenciesByJobs.Columns [1] .HeaderText = ”byrån kodifierar”; dgvAgenciesByJobs.Columns [1] .ReadOnly = true; } fånga (undantagsföre detta) { MessageBox.Show (före detta. Meddelande); } } privat utan laga kraft btnExit_Click (anmärka avsändaren, EventArgs e), { DialogResult = DialogResult.Cancel; DataConnection.Close (); detta. Nära (); retur; } privata SqlConnection GetConnection () { /* skapar avläsaren, och öppet spara att innehålla anslutning stränger * TextReader tr = nya StreamReader (@ " C:\Program Files\Microsoft dynamik \ GP \ Addins \ GSE2000.INI "); Lästa/* fodrar att innehålla anslutningen stränger * ConnectionString = tr.ReadLine (); Nära/* strömma * tr. Nära (); DataConnection = ny System.Data.SqlClient.SqlConnection (ConnectionString); DataConnection.Open (); återgång DataConnection; } privat utan laga kraft dgvAgenciesByJobs_DoubleClick (anmärka avsändaren, EventArgs e), { int CurrentRow; CurrentRow = dgvAgenciesByJobs.CurrentCell.RowIndex; dgvAgenciesByJobs.CurrentCell = dgvAgenciesByJobs [0, CurrentRow]; CellValue = dgvAgenciesByJobs.CurrentCell.Value.ToString (); DialogResult = DialogResult.OK; strSearch = ""; DataConnection.Close (); detta. Nära (); retur; } privata utan laga kraft dgvAgenciesByJobs_KeyPress (anmärka avsändaren, KeyPressEventArgs e), { strSearch += e.KeyChar; om (e.KeyChar-== (rödingen) Keys.Back) { om (strSearch.Length > 0) strSearch = strSearch.Substring (0, strSearch.Length - 2); } för (I = 0; i <= dgvAgenciesByJobs.RowCount - 1; i++) { om (dgvAgenciesByJobs [0, I]. Värdera! = ogiltiga &&dgvAgenciesByJobs [0, I]. Value.ToString () .StartsWith (strSearch.ToUpper ())) { dgvAgenciesByJobs.Rows [I]. Utvalt = true; dgvAgenciesByJobs.CurrentCell = dgvAgenciesByJobs [0, I]; om (dgvAgenciesByJobs.Rows [I]. Falsk visad ==) { dgvAgenciesByJobs.FirstDisplayedScrollingRowIndex = I; } retur; } } } } }
" klar "

Svar : VS C# 2008 gör Non-Modal för att uppföra som Modal

(I ms ta fram VBA), till uppsättningen som fokusera på några som är öppna, bildar, syntaxen, är:

   Bildar! YourFormName.SetFocus

Hoppas detta hjälper som väl.

; -)

JeffCoachman
Andra lösningar  
 
programming4us programming4us