Pytanie : VS 2008 C# DataGridViewButtonColumn ogień dwa razy

I dodawać lookup guzik mój datagridview datagridviewButtonCoulumn. I klikać the lookup guzik. the lookup ekran pojawiać się, the dwoisty stuknięcie wydarzenie przynosić the wartość z powrotem, the lookup ekran przypuszczać daleko od ale the problem I mieć być że the lookup nadokienny ogień znowu i blokować the ekran. Ogień robić the lookup ekran ogień znowu?
(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:
namespace PopulateJobLinkerRTE
{
    jawny częściowy klasowy frmViewJobLinker: DexUIForm
    {

        /* Utrzymanie odniesienie the Widok Agencja Praca Tworzyć WinForm *
        statyczny frmLookupJob ViewAgenciesByJobsForm;

        /* Tworzyć odniesienie the Receivables Transakcja Wejście ekran *
        statyczny RmSalesEntryForm RmSalesEntryForm = Dynamics.Forms.RmSalesEntry;
        ładunek elektrostatyczny RmSalesEntryForm.RmSalesEntryWindow RmSalesEntryWindow = RmSalesEntryForm.RmSalesEntry;
        
        /* Tworzyć odniesienie the Receivables Transakcja Hasłowy Dystrybucja ekran *
        statyczny RmSalesDistributionForm RmSalesDistributionForm = Dynamics.Forms.RmSalesDistribution;
        ładunek elektrostatyczny RmSalesDistributionForm.RmSalesDistributionWindow RmSalesDistributionWindow = RmSalesDistributionForm.RmSalesDistribution;

        /* Definiować smyczkowy zmienna związek sznurek *
        smyczkowy ConnectionString;
                       
        /* Ustawianie SQL Podłączeniowy Treser *
        intymny System.Data.SqlClient.SqlConnection DataConnection;
        intymny System.Data.DataSet DataDataSet;
        intymny System.Data.SqlClient.SqlCommand DataCommand;
        intymny System.Data.SqlClient.SqlDataAdapter DataDataAdapter;
        intymny System.Data.DataSet TrxTypeDataSet;
        intymny System.Data.SqlClient.SqlCommand TrxTypeDataCommand;
        intymny System.Data.SqlClient.SqlDataAdapter TrxTypeDataAdapter;
        intymny SqlCommandBuilder _commandBuilder;

        /* Definiować zmienna wsad liczba i batch źródło *
        smyczkowy DocumentNumber;
        smyczkowy MasterType;
        smyczkowy DistSource;
        smyczkowy DocSource;
        
        jawny frmViewJobLinker ()
        {
            InitializeComponent ();
                        
            txtCustomerID.Text = RmSalesEntryWindow.CustomerNumber;
            txtCustomerName.Text = RmSalesEntryWindow.CustomerName;
            txtDocumentNumber.Text = RmSalesEntryWindow.RmDocumentNumberWork;
            DocumentNumber = RmSalesEntryWindow.RmDocumentNumberWork;
            
            zmiana (RmSalesEntryWindow.DocumentType.Value.ToString ())
            {
                skrzynka "(1)":
                    txtDocumentType.Text = "Sprzedaż/Faktura";
                    przerwa;
                skrzynka "2":
                    txtDocumentType.Text = "Debetowy Notatka";
                    przerwa;
                skrzynka "3":
                    txtDocumentType.Text = "Finanse Ładować";
                    przerwa;
                skrzynka "4":
                    txtDocumentType.Text = "Usługa/Naprawa";
                    przerwa;
                skrzynka "5":
                    txtDocumentType.Text = "Gwarancja";
                    przerwa;
                skrzynka "6":
                    txtDocumentType.Text = "Kredytowy Notatka";
                    przerwa;
                skrzynka "7":
                    txtDocumentType.Text = "Wracać";
                    przerwa;
                brak:
                    txtDocumentType.Text = "Nieznane";
                    przerwa;
            }


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

            txtBatchName.Text = RmSalesEntryWindow.BatchNumber;
            /* Konwertyta the przeniesienie data *
            txtPostingDate.Text = RmSalesEntryWindow.GlPostingDate.Value.ToString ();
            próba
            {

                jeżeli (txtPostingDate.Text! = "")
                {
                    txtPostingDate.Text = Convert.ToDateTime (txtPostingDate.Text) .ToString ("MM/dd/yyyy");
                }
            }
            chwyt (Wyjątek wyjątek)
            {
                MessageBox.Show ("BŁĄD:: " + ex. Wiadomość);
                to. Zakończenie ();

            }
            /* Konwertyta the dokument data *
            txtDocumentDate.Text = RmSalesEntryWindow.DocumentDate.Value.ToString ();
            próba
            {
                jeżeli (txtDocumentDate.Text.ToString ()! = "")
                {
                    txtDocumentDate.Text = Convert.ToDateTime (txtDocumentDate.Text) .ToString ("MM/dd/yyyy");
                }
            }
            chwyt (Wyjątek wyjątek)
            {
                MessageBox.Show ("BŁĄD:: " + ex. Wiadomość);
                to. Zakończenie ();

            }


            MasterType = "CUS";
            DistSource = "Receivables Transakcja Wejście";
            DocSource = "Receivables";

            /* Zaludniać the Akcydensowy Linker stół opierać się na ten Dokument Liczba *
            próba
            {
                SqlConnection przeciw = GetConnection ();
                SqlCommand cmd = nowy SqlCommand ();

                cmd.CommandType = CommandType.StoredProcedure;

                cmd. Parameters.Add (nowy SqlParameter ("@DCMTNMBR", DocumentNumber));
                cmd. Parameters.Add (nowy SqlParameter ("@MASTERTYPE", MasterType));
                cmd. Parameters.Add (nowy SqlParameter ("@DISTSOURCE", DistSource));
                cmd. Parameters.Add (nowy SqlParameter ("@DOCSOURCE", DocSource));

                cmd.CommandText = "rbsUpdateJobLinkerRTE";

                cmd. Związek = przeciw;

                cmd.ExecuteNonQuery ();

                przeciw. Zakończenie ();

            }
            chwyt (Wyjątek wyjątek)
            {
                MessageBox.Show ("BŁĄD:: " + ex. Wiadomość);
                to. Zakończenie ();

            }

            /* Pokaz the GL Dystrybucja od the Akcydensowy Linker zgłaszać na Dokument Liczba *
            próba
            {
                SqlConnection DataConnection = GetConnection ();

                /* Definiować dataset dla Transakcja Typ *
                TrxTypeDataSet = nowy System.Data.DataSet ();
                TrxTypeDataSet.CaseSensitive = fałszywy;

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

                TrxTypeDataCommand.CommandText = "wybrany LTRIM (DISTTRXTYPE) JAKO DISTTRXTYPE od JOB_TRX_TYPES dokąd formtype='SALES' ROZKAZ DISTTRXTYPE";

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

                TrxTypeDataAdapter.Fill (TrxTypeDataSet);

                /* Definiować dataset dla GL dystrybucja kwota *
                DataDataSet = nowy System.Data.DataSet ();
                DataDataSet.CaseSensitive = fałszywy;

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

                DataCommand.CommandText = "wybrany JOBNUMBER, ACTNUMST, DEBITAMT, CRDTAMNT, DISTTYPE, DISTTRXTYPE, DISTREF, BCHSOURC, TRANSNMBR, TRXTYPE, DSTSQNUM, CNTRLTYP, APTVCHNM, SPCLDIST" +
                "od JOB_LINKER DOKĄD TRANSNMBR = '" + DocumentNumber + "'rozkaz DSTSQNUM";

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

                DataDataAdapter.Fill (DataDataSet);

                dgvViewJobLinker.DataError += nowy DataGridViewDataErrorEventHandler (dgvJobLinker_DataError);

                dgvViewJobLinker.RowHeadersVisible = fałszywy;
                dgvViewJobLinker.DataSource = DataDataSet.Tables [(0)] .DefaultView;
                dgvViewJobLinker.AutoGenerateColumns = true;
                dgvViewJobLinker.DefaultCellStyle.NullValue = '';
                dgvViewJobLinker.AllowUserToAddRows = fałszywy;

                DataGridViewButtonColumn colButton = nowy DataGridViewButtonColumn ();
                colButton.HeaderText = "";
                colButton.Name = "btnLookupJob";
                colButton.Text = "Zwyżkować Praca";
                colButton.UseColumnTextForButtonValue = true;

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

                dgvViewJobLinker.Columns [(0)]. Szerokość = 80;
               
                dgvViewJobLinker.Columns [(1)]. Szerokość = 100;
                dgvViewJobLinker.Columns [(1)] .ReadOnly = fałszywy;
                dgvViewJobLinker.Columns [(1)] .HeaderText = "Praca Liczba";

                dgvViewJobLinker.Columns [2]. Szerokość = 100;
                dgvViewJobLinker.Columns [2] .ReadOnly = true;
                dgvViewJobLinker.Columns [2] .HeaderText = "GL Konto";

                dgvViewJobLinker.Columns [3]. Szerokość = 84;
                dgvViewJobLinker.Columns [3] .ReadOnly = true;
                dgvViewJobLinker.Columns [3] .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
                dgvViewJobLinker.Columns [3] .DefaultCellStyle.Format = "c";
                dgvViewJobLinker.Columns [3] .HeaderText = "Debet Kwota";

                dgvViewJobLinker.Columns [4]. Szerokość = 84;
                dgvViewJobLinker.Columns [4] .ReadOnly = true;
                dgvViewJobLinker.Columns [4] .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
                dgvViewJobLinker.Columns [4] .DefaultCellStyle.Format = "c";
                dgvViewJobLinker.Columns [4] .HeaderText = "Kredyt Kwota";

                dgvViewJobLinker.Columns [5]. Szerokość = 100;
                dgvViewJobLinker.Columns [5] .ReadOnly = true;
                dgvViewJobLinker.Columns [5] .HeaderText = "Dist Typ";

                /* Dodawać nowy Kolumna (ComboBox) dla the Transakcja Typ kolumna *
                DataGridViewComboBoxColumn colType = nowy DataGridViewComboBoxColumn ();

                colType.DefaultCellStyle.NullValue = "";
                colType.DataSource = TrxTypeDataSet.Tables [(0)];
                colType.ValueMember = DataDataSet.Tables [(0)]. Kolumna [5] .ColumnName.ToString ();
                colType.DisplayMember = colType.ValueMember;
                colType.HeaderText = "Transakcja Typ";
                colType.DropDownWidth = 90;
                colType.Width = 90;
                colType.MaxDropDownItems = 7;
                colType.DataPropertyName = DataDataSet.Tables [(0)]. Kolumna [5] .ColumnName.ToString ();
                colType.Name = DataDataSet.Tables [(0)]. Kolumna [5] .ColumnName.ToString ();
                dgvViewJobLinker.Columns.RemoveAt (6);
                dgvViewJobLinker.Columns.Insert (6, colType);

                dgvViewJobLinker.Columns [7]. Szerokość = 292;
                dgvViewJobLinker.Columns [7] .ReadOnly = fałszywy;
                dgvViewJobLinker.Columns [7] .HeaderText = "Dist Odniesienie";

                dgvViewJobLinker.Columns [8]. Widoczny = fałszywy;
                dgvViewJobLinker.Columns [9]. Widoczny = fałszywy;
                dgvViewJobLinker.Columns [10]. Widoczny = fałszywy;
                dgvViewJobLinker.Columns [11]. Widoczny = fałszywy;
                dgvViewJobLinker.Columns [12]. Widoczny = fałszywy;
                dgvViewJobLinker.Columns [13]. Widoczny = fałszywy;
                dgvViewJobLinker.Columns [14]. Widoczny = fałszywy;

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

            }
            chwyt (Wyjątek wyjątek)
            {
                MessageBox.Show ("Błąd: " + ex. Wiadomość);
            }

        }

        intymny kawitacyjny btnExit_Click (przedmiot nadawca, EventArgs e)
        {
            to. Kryjówka ();
            to. Dispose ();
        }

        intymny SqlConnection GetConnection ()
        {
            /* Tworzyć czytelnik i otwarty kartoteka związek sznurek *
            TextReader tr = nowy StreamReader (@ " C:\Program Files\Microsoft Dynamika \ GP \ Addins \ GSE.INI ");

            /* Czytać linia the związek sznurek *
            ConnectionString = tr.ReadLine ();

            /* Zakończenie the strumień *
            tr. Zakończenie ();

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

            powrotny DataConnection;
        }

        intymny pustka dgvViewJobLinker_SelectionChanged (przedmiot nadawca, EventArgs e)
        {

        }



        intymny kawitacyjny btnSave_Click (przedmiot nadawca, EventArgs e)
        {
            próba
            {
                //DataCommandBuilder = nowy SqlCommandBuilder (DataDataAdapter);
                //DataDataAdapter.DeleteCommand = DataCommandBuilder.GetDeleteCommand ();
                //DataDataAdapter.InsertCommand = DataCommandBuilder.GetInsertCommand ();
                //DataDataAdapter.UpdateCommand = DataCommandBuilder.GetUpdateCommand ();
                _commandBuilder.GetUpdateCommand ();

                DataDataAdapter.Update (DataDataSet);
            }
            chwyt (Wyjątek wyjątek)
            {
                MessageBox.Show (messageBox.Show. Wiadomość);
            }
            to. Kryjówka ();
            to. Dispose ();
        }

        intymny pustka label1_Click (przedmiot nadawca, EventArgs e)
        {

        }

        intymny kawitacyjny dgvJobLinker_DataError (przedmiot nadawca, DataGridViewDataErrorEventArgs anError)
        {
            
        }

        intymny kawitacyjny dgvViewJobLinker_CellClick (przedmiot nadawca, DataGridViewCellEventArgs e)
        {
            
        }

        intymny kawitacyjny dgvViewJobLinker_CellContentClick (przedmiot nadawca, DataGridViewCellEventArgs e)
        {
            jeżeli (e.ColumnIndex == (0) && e.RowIndex > (0))
            {

                jeżeli (ViewAgenciesByJobsForm == null)
                {
                    ViewAgenciesByJobsForm = nowy frmLookupJob ();
                }
                inny
                {
                    jeżeli (ViewAgenciesByJobsForm.Created == fałszywy)
                    {
                        ViewAgenciesByJobsForm = nowy frmLookupJob ();
                    }
                }

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

            }
        }
        }
    }

Odpowiedź : VS 2008 C# DataGridViewButtonColumn ogień dwa razy

Cześć,
  ono być najlepsza praktyka "using", i the modalny forma. ty musieć dla czy użytkownik zmieniać musieć i klikać akceptować guzik (che guzik ustawiać DialogResult = DialogResult.OK) .if on klikać "cancel" guzik (che guzik ustawiać DialogResult = DialogResult.Cancel), ty musieć aktualizacja komórka wartość. dołączać próbka.

ViewAgenciesByJobsForm.ShowDialog (to)

set prąd forma jako rodzic forma.
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
jeżeli (e.ColumnIndex == (0) && e.RowIndex > (0))
{
    (frmLookupJob ViewAgenciesByJobsForm =
                       ViewAgenciesByJobsForm = nowy frmLookupJob ())
  {
     jeżeli (ViewAgenciesByJobsForm.ShowDialog (dialogResult.OK) == DialogResult.OK))
         dgvViewJobLinker [(1), dgvViewJobLinker.CurrentCell.RowIndex]. Wartość                   = ViewAgenciesByJobsForm.CellValue;

   }
}


w frmLookupJob, ono coś jak:

(1) btnOk stuknięcie wydarzenie:
    CellValue = "mój nowy Wartość"
    DialogResult   =DialogResut.OK;

(2) btnCancel stuknięcie wydarzenie:
    DialogResult   =DialogResut.Cancel;
Inne rozwiązania  
 
programming4us programming4us