Frage : GEGEN C# 2008 feuert DataGridViewButtonColumn zweimal ab

Ich hinzufügte einen Nachschlagenknopf meinem datagridview nopf, indem ich ein datagridviewButtonCoulumn. addierte, das ich den Nachschlagenknopf anklicke. der Nachschlagenschirm erscheint, holt das doppelte Klickenereignis den Wert zurück, soll der Nachschlagenschirm weggehen, aber das Problem, das ich habe, ist, dass das Nachschlagenfenster wieder abfeuert und den Schirm verriegelt. Was herstellt den Nachschlagenschirm en, wieder abzufeuern?
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:
6:
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:
namespace PopulateJobLinkerRTE
{
    allgemeines teilweises Kategorie frmViewJobLinker: DexUIForm
    {

        /* Unterhalt ein Hinweis auf den Ansicht-Agenturen durch Arbeitsformular WinForm *
        statisches frmLookupJob ViewAgenciesByJobsForm;

        /* verursachen einen Hinweis auf dem Außenstand-Verhandlung-Eintragungsschirm *
        statisches RmSalesEntryForm RmSalesEntryForm = Dynamics.Forms.RmSalesEntry;
        statisches RmSalesEntryForm.RmSalesEntryWindow RmSalesEntryWindow = RmSalesEntryForm.RmSalesEntry;
        
        /* verursachen einen Hinweis auf dem Außenstand-Verhandlung-Eintragungs-Verteilungsschirm *
        statisches RmSalesDistributionForm RmSalesDistributionForm = Dynamics.Forms.RmSalesDistribution;
        statisches RmSalesDistributionForm.RmSalesDistributionWindow RmSalesDistributionWindow = RmSalesDistributionForm.RmSalesDistribution;

        /* definieren eine Schnurvariable, um Anschlussschnur zu halten *
        Schnur ConnectionString;
                       
        /* Einstellung SQL-Verbindungsverwalter *
        privates System.Data.SqlClient.SqlConnection DataConnection;
        privates System.Data.DataSet DataDataSet;
        privates System.Data.SqlClient.SqlCommand DataCommand;
        privates System.Data.SqlClient.SqlDataAdapter DataDataAdapter;
        privates System.Data.DataSet TrxTypeDataSet;
        privates System.Data.SqlClient.SqlCommand TrxTypeDataCommand;
        privates System.Data.SqlClient.SqlDataAdapter TrxTypeDataAdapter;
        privates SqlCommandBuilder _commandBuilder;

        /* definieren Variablen, um Bearbeitungsnummer und Reihenquelle zu halten *
        Schnur DocumentNumber;
        Schnur MasterType;
        Schnur DistSource;
        Schnur DocSource;
        
        allgemeines frmViewJobLinker ()
        {
            InitializeComponent ();
                        
            txtCustomerID.Text = RmSalesEntryWindow.CustomerNumber;
            txtCustomerName.Text = RmSalesEntryWindow.CustomerName;
            txtDocumentNumber.Text = RmSalesEntryWindow.RmDocumentNumberWork;
            DocumentNumber = RmSalesEntryWindow.RmDocumentNumberWork;
            
            Schalter (RmSalesEntryWindow.DocumentType.Value.ToString ())
            {
                Fall „1“:
                    txtDocumentType.Text = „Verkäufe/Rechnungen“;
                    Bruch;
                Fall „2“:
                    txtDocumentType.Text = „Belastungsanzeigen“;
                    Bruch;
                Fall „3“:
                    txtDocumentType.Text = „Finanzierung auflädt“;
                    Bruch;
                Fall „4“:
                    txtDocumentType.Text = „Service/Reparaturen“;
                    Bruch;
                Fall „5“:
                    txtDocumentType.Text = „Garantie“;
                    Bruch;
                Fall „6“:
                    txtDocumentType.Text = „Gutschriftsanzeige“;
                    Bruch;
                Fall „7“:
                    txtDocumentType.Text = „zurückgeht“ geht;
                    Bruch;
                Rückstellung:
                    txtDocumentType.Text = „Unbekanntes“;
                    Bruch;
            }


            txtDocumentAmount.Text = RmSalesEntryWindow.DocumentAmount.Value.ToString („c“);
            DocumentNumber = RmSalesEntryWindow.RmDocumentNumberWork;

            txtBatchName.Text = RmSalesEntryWindow.BatchNumber;
            /* Bekehrter das Aufgabedatum *
            txtPostingDate.Text = RmSalesEntryWindow.GlPostingDate.Value.ToString ();
            Versuch
            {

                wenn (txtPostingDate.Text! = "")
                {
                    txtPostingDate.Text = Convert.ToDateTime (txtPostingDate.Text) .ToString („MM/dd/yyyy“);
                }
            }
            Fang (Ausnahme ex)
            {
                MessageBox.Show („STÖRUNG:: “ + ex. Mitteilung);
                dieses. Abschluss ();

            }
            /* Bekehrter das Dokumentendatum *
            txtDocumentDate.Text = RmSalesEntryWindow.DocumentDate.Value.ToString ();
            Versuch
            {
                wenn (txtDocumentDate.Text.ToString ()! = "")
                {
                    txtDocumentDate.Text = Convert.ToDateTime (txtDocumentDate.Text) .ToString („MM/dd/yyyy“);
                }
            }
            Fang (Ausnahme ex)
            {
                MessageBox.Show („STÖRUNG:: “ + ex. Mitteilung);
                dieses. Abschluss ();

            }


            MasterType = „CUS“;
            DistSource = „Außenstand-Verhandlung-Eintragung“;
            DocSource = „Außenstände“;

            /* bevölkern die Job-Verknüpfungsprogrammtabelle, die auf dieser Exemplarnummer basiert *
            Versuch
            {
                SqlConnection Betrug = GetConnection ();
                SqlCommand cmd = neues SqlCommand ();

                cmd.CommandType = CommandType.StoredProcedure;

                cmd. Parameters.Add (neues SqlParameter („@DCMTNMBR“, DocumentNumber));
                cmd. Parameters.Add (neues SqlParameter („@MASTERTYPE“, MasterType));
                cmd. Parameters.Add (neues SqlParameter („@DISTSOURCE“, DistSource));
                cmd. Parameters.Add (neues SqlParameter („@DOCSOURCE“, DocSource));

                cmd.CommandText = „rbsUpdateJobLinkerRTE“;

                cmd. Anschluss = Betrug;

                cmd.ExecuteNonQuery ();

                Betrug. Abschluss ();

            }
            Fang (Ausnahme ex)
            {
                MessageBox.Show („STÖRUNG:: “ + ex. Mitteilung);
                dieses. Abschluss ();

            }

            /* Anzeige, welche die GL Verteilungen vom Job-Verknüpfungsprogramm pro Exemplarnummer verlegen *
            Versuch
            {
                SqlConnection DataConnection = GetConnection ();

                /* definieren Datensatz für Verhandlung-Arten *
                TrxTypeDataSet = neues System.Data.DataSet ();
                TrxTypeDataSet.CaseSensitive = falsch;

                TrxTypeDataCommand = neues System.Data.SqlClient.SqlCommand ();
                TrxTypeDataCommand.Connection = DataConnection;

                TrxTypeDataCommand.CommandText = „auserwähltes LTRIM (DISTTRXTYPE) ALS DISTTRXTYPE von JOB_TRX_TYPES wo AUFTRAG der formtype='SALES DURCH DISTTRXTYPE“;

                TrxTypeDataAdapter = neues System.Data.SqlClient.SqlDataAdapter ();
                TrxTypeDataAdapter.SelectCommand = TrxTypeDataCommand;

                TrxTypeDataAdapter.Fill (TrxTypeDataSet);

                /* definieren Datensatz für GL Verteilungsmengen *
                DataDataSet = neues System.Data.DataSet ();
                DataDataSet.CaseSensitive = falsch;

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

                DataCommand.CommandText = „auserwähltes JOBNUMBER, ACTNUMST, DEBITAMT, CRDTAMNT, DISTTYPE, DISTTRXTYPE, DISTREF, BCHSOURC, TRANSNMBR, TRXTYPE, DSTSQNUM, CNTRLTYP, APTVCHNM, SPCLDIST“ +
                „von JOB_LINKER WO TRANSNMBR = '“ + DocumentNumber + „'Auftrag durch DSTSQNUM“;

                DataDataAdapter = neues System.Data.SqlClient.SqlDataAdapter ();
                DataDataAdapter.SelectCommand = DataCommand;
                _commandBuilder = neues SqlCommandBuilder (DataDataAdapter);

                DataDataAdapter.Fill (DataDataSet);

                dgvViewJobLinker.DataError += neues DataGridViewDataErrorEventHandler (dgvJobLinker_DataError);

                dgvViewJobLinker.RowHeadersVisible = falsch;
                dgvViewJobLinker.DataSource = DataDataSet.Tables [0] .DefaultView;
                dgvViewJobLinker.AutoGenerateColumns = ausrichten en;
                dgvViewJobLinker.DefaultCellStyle.NullValue = '';
                dgvViewJobLinker.AllowUserToAddRows = falsch;

                DataGridViewButtonColumn colButton = neues DataGridViewButtonColumn ();
                colButton.HeaderText = "";
                colButton.Name = „btnLookupJob“;
                colButton.Text = „Nachschlagen-Job“;
                colButton.UseColumnTextForButtonValue = ausrichten en;

                dgvViewJobLinker.Columns.Insert (0, colButton);
                dgvViewJobLinker.CellContentClick += neues DataGridViewCellEventHandler (dgvViewJobLinker_CellContentClick);

                dgvViewJobLinker.Columns [0]. Breite = 80;
               
                dgvViewJobLinker.Columns [1]. Breite = 100;
                dgvViewJobLinker.Columns [1] .ReadOnly = falsch;
                dgvViewJobLinker.Columns [1] .HeaderText = „Jobnummer“;

                dgvViewJobLinker.Columns [2]. Breite = 100;
                dgvViewJobLinker.Columns [2] .ReadOnly = ausrichten en;
                dgvViewJobLinker.Columns [2] .HeaderText = „GL Konto“;

                dgvViewJobLinker.Columns [3]. Breite = 84;
                dgvViewJobLinker.Columns [3] .ReadOnly = ausrichten en;
                dgvViewJobLinker.Columns [3] .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
                dgvViewJobLinker.Columns [3] .DefaultCellStyle.Format = „c“;
                dgvViewJobLinker.Columns [3] .HeaderText = „Schuldposten-Menge“;

                dgvViewJobLinker.Columns [4]. Breite = 84;
                dgvViewJobLinker.Columns [4] .ReadOnly = ausrichten en;
                dgvViewJobLinker.Columns [4] .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
                dgvViewJobLinker.Columns [4] .DefaultCellStyle.Format = „c“;
                dgvViewJobLinker.Columns [4] .HeaderText = „Gutschrift-Menge“;

                dgvViewJobLinker.Columns [5]. Breite = 100;
                dgvViewJobLinker.Columns [5] .ReadOnly = ausrichten en;
                dgvViewJobLinker.Columns [5] .HeaderText = „Dist Art“;

                /* hinzufügen eine neue Spalte (ComboBox) für die Verhandlung-Art Spalte) *
                DataGridViewComboBoxColumn colType = neues DataGridViewComboBoxColumn ();

                colType.DefaultCellStyle.NullValue = „„;
                colType.DataSource = TrxTypeDataSet.Tables [0];
                colType.ValueMember = DataDataSet.Tables [0]. Spalten [5] .ColumnName.ToString ();
                colType.DisplayMember = colType.ValueMember;
                colType.HeaderText = „Verhandlung-Art“;
                colType.DropDownWidth = 90;
                colType.Width = 90;
                colType.MaxDropDownItems = 7;
                colType.DataPropertyName = DataDataSet.Tables [0]. Spalten [5] .ColumnName.ToString ();
                colType.Name = DataDataSet.Tables [0]. Spalten [5] .ColumnName.ToString ();
                dgvViewJobLinker.Columns.RemoveAt (6);
                dgvViewJobLinker.Columns.Insert (6, colType);

                dgvViewJobLinker.Columns [7]. Breite = 292;
                dgvViewJobLinker.Columns [7] .ReadOnly = falsch;
                dgvViewJobLinker.Columns [7] .HeaderText = „Dist Hinweis“;

                dgvViewJobLinker.Columns [8]. Sichtbar = falsch;
                dgvViewJobLinker.Columns [9]. Sichtbar = falsch;
                dgvViewJobLinker.Columns [10]. Sichtbar = falsch;
                dgvViewJobLinker.Columns [11]. Sichtbar = falsch;
                dgvViewJobLinker.Columns [12]. Sichtbar = falsch;
                dgvViewJobLinker.Columns [13]. Sichtbar = falsch;
                dgvViewJobLinker.Columns [14]. Sichtbar = falsch;

                dgvViewJobLinker.EditMode = DataGridViewEditMode.EditOnEnter;
                dgvViewJobLinker.Focus ();

            }
            Fang (Ausnahme ex)
            {
                MessageBox.Show („Störung: “ + ex. Mitteilung);
            }

        }

        privates leeres btnExit_Click (Gegenstandabsender, EventArgs e)
        {
            dieses. Fell ();
            dieses. Abschaffen ();
        }

        privates SqlConnection GetConnection ()
        {
            /* herstellen den Leser und geöffnete Akte er, die Anschlussschnur enthalten *
            TextReader tr = neues StreamReader (@ " C:\Program Files\Microsoft-Dynamik \ GP \ Addins \ GSE.INI ");

            /* las die Linie, welche die Anschlussschnur enthält *
            ConnectionString = tr.ReadLine ();

            /* schließen den Strom *
            tr. Abschluss ();

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

            RückholDataConnection;
        }

        privates leeres dgvViewJobLinker_SelectionChanged (Gegenstandabsender, EventArgs e)
        {

        }



        privates leeres btnSave_Click (Gegenstandabsender, EventArgs e)
        {
            Versuch
            {
                //DataCommandBuilder = neues SqlCommandBuilder (DataDataAdapter);
                //DataDataAdapter.DeleteCommand = DataCommandBuilder.GetDeleteCommand ();
                //DataDataAdapter.InsertCommand = DataCommandBuilder.GetInsertCommand ();
                //DataDataAdapter.UpdateCommand = DataCommandBuilder.GetUpdateCommand ();
                _commandBuilder.GetUpdateCommand ();

                DataDataAdapter.Update (DataDataSet);
            }
            Fang (Ausnahme ex)
            {
                MessageBox.Show (ex. Mitteilung);
            }
            dieses. Fell ();
            dieses. Abschaffen ();
        }

        private Lücke label1_Click (Gegenstandabsender, EventArgs e)
        {

        }

        privates leeres dgvJobLinker_DataError (Gegenstandabsender, DataGridViewDataErrorEventArgs anError)
        {
            
        }

        privates leeres dgvViewJobLinker_CellClick (Gegenstandabsender, DataGridViewCellEventArgs e)
        {
            
        }

        privates leeres dgvViewJobLinker_CellContentClick (Gegenstandabsender, DataGridViewCellEventArgs e)
        {
            wenn (e.ColumnIndex == 0 && e.RowIndex > 0)
            {

                wenn (ViewAgenciesByJobsForm == Null)
                {
                    ViewAgenciesByJobsForm = neues frmLookupJob ();
                }
                sonst
                {
                    wenn (ViewAgenciesByJobsForm.Created == falsch)
                    {
                        ViewAgenciesByJobsForm = neues frmLookupJob ();
                    }
                }

                ViewAgenciesByJobsForm.ShowDialog ();
                /* ViewAgenciesByJobsForm.Show (); 
                ViewAgenciesByJobsForm.Activate (); *
                dgvViewJobLinker [1, dgvViewJobLinker.CurrentCell.RowIndex]. Wert = ViewAgenciesByJobsForm.CellValue;

            }
        }
        }
    }

Antwort : GEGEN C# 2008 feuert DataGridViewButtonColumn zweimal ab

Hallo,
  es ist optimales Verfahren, „using“ zu verwenden, um die modalen Formen zu verursachen, zu zeigen und zu zerstören. Sie sollten auf überprüfen, ob Benutzer etwas geändert und geklickt Knopf (den ein Knopf DialogResult = DialogResult.OK einstellt), .if annehmen, das er „Löschen“ Knopf anklickt (den ein Knopf DialogResult = DialogResult.Cancel einstellt), Sie sollten Updatezellenwert nicht tun. angebracht Probe t.

ViewAgenciesByJobsForm.ShowDialog (dieses)

einstellt gegenwärtige Form als Elternteilform ge.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
wenn (e.ColumnIndex == 0 && e.RowIndex > 0)
{
  Anwendung  (frmLookupJob ViewAgenciesByJobsForm =
                       ViewAgenciesByJobsForm = neues frmLookupJob ())
  {
     wenn (ViewAgenciesByJobsForm.ShowDialog (dieses) == DialogResult.OK))
         dgvViewJobLinker [1, dgvViewJobLinker.CurrentCell.RowIndex]. Wert                   = ViewAgenciesByJobsForm.CellValue;

   }
}


im frmLookupJob wird es etwas wie:

(1) btnOk Klickenereignis:
    CellValue = „mein neuer Wert“
    DialogResult   =DialogResut.OK;

(2) btnCancel Klickenereignis:
    DialogResult   =DialogResut.Cancel;
Weitere Lösungen  
 
programming4us programming4us