ID Artikel: 818220 - Kajian Terakhir: 04 Oktober 2011 - Revisi: 2.0

Kontrol ActiveX pengguna tidak terlihat dalam Form Designer ketika Anda membuka kembali proyek yang sudah ada

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

GEJALA

Ketika Anda membuka kembali aplikasi Windows yang sudah ada dalam Visual Studio.NET atau Visual Studio 2005, sebelumnya terlihat pengguna kontrol ActiveX mungkin tidak dapat dilihat di Windows bentuk desainer. Juga, ketika Anda mencoba untuk mengkompilasi proyek, Anda mungkin menerima kesalahan yang mirip dengan berikut ini:
Jenis 'AxProject1.AxTestControl' tidak didefinisikan.
The direferensikan komponen 'AxProject1' tidak dapat ditemukan. A.NET Majelis pembungkus untuk jenis tergantung perpustakaan 'Project1' tidak bisa ditemukan.

PENYEBAB

Ketika Anda menambahkan kontrol ActiveX pengguna untuk Visual Studio.NET atau Visual Studio 2005 proyek, Visual Studio.NET atau Visual Studio 2005 internal mulai Windows bentuk kontrol ActiveX Importir alat (Aximp.exe). Aximp.exe mengkonversi perpustakaan jenis ActiveX kontrol pengguna, dan menghasilkan dua file berikut:
  • Common language runtime proxy untuk COM jenis.
  • Windows Forms proxy untuk pengguna ActiveX kontrol.
File-file dua proxy ini memiliki informasi yang berkaitan ada kontrol ActiveX pengguna.

Ketika Anda menambahkan anggota publik untuk ada kontrol ActiveX pengguna, seperti acara, metode atau properti, dan kemudian Anda mengkompilasi ulang pengguna kontrol ActiveX, satu atau lebih anggota masyarakat akan ditambahkan ke antarmuka pengguna kontrol ActiveX. Namun, common language runtime proxy file tidak diperbarui dengan informasi baru ini. Oleh karena itu, ActiveX kontrol pengguna tidak dihasilkan dengan benar di Windows Form Designer, sesuai Windows Forms proxy adalah tidak diperbarui, dan perilaku dibahas dalam "Gejala" bagian dari artikel ini terjadi.

Catatan Pada Properti kotak dialog proyek, Anda dapat klik Komponen tab dan pilih Biner kompatibilitas pilihan sebelum Anda mengkompilasi ulang yang ada Kontrol ActiveX pengguna dalam Microsoft Visual Basic 6.0. Dalam kasus ini, meskipun Common language runtime proxy diperbarui, Windows Forms proxy tidak Diperbarui. Hal ini menyebabkan gejala yang sama.

TEKNIK PEMECAHAN MASALAH

Untuk mengatasi masalah ini, hapus referensi ada pengguna ActiveX kontrol, dan kemudian menambahkan referensi diperbarui lagi. Untuk melakukan ini, mengikuti salah satu metode berikut.

Metode 1

  1. Dalam solusi Explorer, di bawah Referensi, Klik kanan AxProject1, lalu klikHapus.
  2. Di bawah Referensi, klik kananProject1, lalu klik Hapus.
  3. Dalam toolbox, klik dua kaliProject1.TestControl untuk menambahkan pengguna kontrol ActiveX diubah untuk membentuk.

    Perhatikan bahwa pengguna ActiveX kontrol dalam bentuk Windows Desainer dan referensi AxProject1 danProject1 muncul di bawah Referensi untuk UserControlDemo.
  4. Pada Bangun menu, klik Bangun Solusi.

    Anda tidak menerima kesalahan.
Catatan Jika Anda menggunakan pemecahan masalah ini, pengguna kontrol ActiveX diubah adalah ditambahkan ke formulir Anda sebagai AxTestControl2, dan formulir Anda masih memiliki beberapa kode yang berkaitan dengan AxTestControl1. Misalnya, pernyataan berikut masih ada, bahkan Meskipun AxTestControl1 adalah tidak lagi pada formulir Anda:

Visual Basic.NET contoh kode
Friend WithEvents AxTestControl1 As AxProject1.AxTestControl
Visual C#.NET contoh kode
private AxProject1.AxTestControl axTestControl1;
Jika Anda menggunakan AxTestControl1 di tempat lain dalam kode Anda, dan Anda tidak secara eksplisit membuat sebuah instance dari AxProject1.AxTestControl objek, Anda dapat menerima
'NullReferenceException'
kesalahan.

Selain itu, jika Anda memiliki beberapa bentuk dengan contoh Kontrol ActiveX pengguna, Anda harus mengulangi langkah sebelumnya untuk setiap bentuk.

Metode 2

  1. Dalam solusi Explorer, di bawah Referensi, Klik kanan AxProject1, lalu klikHapus.
  2. Di bawah Referensi, klik kananProject1, lalu klik Hapus.
  3. Membuka Visual Studio.NET atau Visual Studio 2005 command prompt, dan kemudian perubahan jalur direktori ke direktori binUserControlDemo.
  4. Ketik perintah berikut, dan kemudian tekan tombol ENTER untuk Jalankan Aximp.exe untuk secara eksplisit menghasilkan common language runtime proxy dan Windows Forms proxy:

    aximp "FilePathMengatakan \Project1.ocx " /out:AxInterop.Project1.dll

    AxInterop.Project1.dll dan Project1.dll dihasilkan di direktori bin.

    Catatan Ganti FilePath dengan jalan direktori yang berisi Project1.ocx.
  5. Beralih ke Visual Studio.NET atau Visual Studio 2005. PadaProject menu, klik Menambahkan referensi.
  6. Dalam Menambahkan referensi kotak dialog yang muncul, klik People.
  7. Cari AxInterop.Project1.dll dan Project1.dll, dan kemudian memilih mereka.
  8. Klik Terbuka, lalu klikOke untuk menambahkan referensi ini ke proyek Anda.
  9. Tutup dan membuka kembali Windows Form Designer.

    Pemberitahuan kontrol ActiveX pengguna dimodifikasi dalam bentuk Windows Desainer.

    Catatan Tidak seperti di solusi sebelumnya, pengguna ActiveX diubah kontrol masih bernama AxTestControl1. Oleh karena itu, ada tidak ada kode yang tidak perlu.
  10. Pada Bangun menu, klik Bangun Solusi.

    Anda tidak menerima kesalahan.
Catatan Langkah-langkah ini didasarkan pada sampel dari "informasi selengkapnya" bagian. Oleh karena itu, entitas yang disebutkan dalam tugas ini mungkin berbeda dari entitas dalam proyek Anda, tergantung pada implementasi Anda.

STATUS

Ini adalah aktivitas.

INFORMASI LEBIH LANJUT

Langkah-Langkah untuk Mereproduksi Perilaku

  1. Membuka Visual Basic 6.0, dan kemudian membuat kontrol ActiveX proyek.
  2. Pada jendela Properties, mengubahNama untukTestControl.
  3. Pada Lihat menu, klikKode, dan kemudian tambahkan kode berikut:
    Public Sub Method1()
       MsgBox ("Method 1")
    End Sub
  4. Pada Berkas menu, klik Membuat Project1.ocx, lalu klik Oke dalam Membuat Project kotak dialog yang muncul.
  5. Membuka Visual Studio.NET atau Visual Studio 2005. Membuat aplikasi Windows yang bernamaUserControlDemo dengan menggunakan Visual Basic.NET, Visual Basic 2005 atau Visual C# .NET.
  6. Dalam Visual Studio.NET 2003, klik Tambah/Hapus Toolbox item pada Alat menu.

    Dalam Visual Studio.NET 2002, klik Menyesuaikan Toolbox pada Alat menu.


    Dalam Visual Studio.2005, klik Memilih Item Toolbox pada Alat menu.
  7. Klik COM komponen tab, dan kemudian Klik People.
  8. Cari Project1.ocx (dibuat di langkah 4), dan kemudian pilih itu.
  9. Klik Terbuka, lalu klikOke untuk menambahkan Project1.TestControl untuk Toolbox.
  10. Dalam toolbox, klik dua kaliProject1.TestControl untuk menambahkan AxTestControl1 untuk bentuk.

    Referensi AxProject1 danProject1 secara otomatis muncul di bawahReferensi untuk UserControlDemo.
  11. Pada Bangun menu, klik Bangun Solusi.
  12. Menyimpan proyek, dan kemudian berhenti Visual Studio .NET atau Visual Studio 2005.
  13. Beralih ke Visual Basic 6.0, dan kemudian menambahkan acara publik, metode atau properti untuk TestControl. Sebagai contoh, menambahkan kode berikut untuk TestControl:
    Public Sub Method2()
       MsgBox ("Method 2")
    End Sub
  14. Pada Project menu, klikProject1 properti.
  15. Dalam Project1 - proyek propertikotak dialog yang muncul, klik untuk memilih Komponen.
  16. Di bawah Versi kompatibilitas, klik untuk Pilih Biner kompatibilitas, lalu klikOke.

    Catatan Langkah 14 melalui langkah 16 menjelaskan bagaimana untuk memilih Biner Kompatibilitas pilihan sebelum rekompilasi pengguna ActiveX kontrol.
  17. Pada Berkas menu, klik Membuat Project1.ocx.
  18. Klik Ya saat Anda diminta untuk mengganti file yang ada.
  19. Membuka Visual Studio.NET atau Visual Studio 2005 danUserControlDemo.

    Perhatikan bahwaTestControl1 ini tidak terlihat dalam bentuk Windows Desainer.
  20. Pada Bangun menu, klik Bangun Solusi.

    Anda menerima galat yang disebutkan dalam "Gejala" bagian dari artikel ini.

REFERENSI

Untuk informasi tambahan, klik artikel berikut nomor ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
316171  (http://support.microsoft.com/kb/316171/EN-US/ )
Untuk informasi lebih lanjut, kunjungi Website MSDN berikut Situs:
Tinjauan Umum kontrol Microsoft ActiveX
http://msdn2.Microsoft.com/en-us/library/ms968501.aspx (http://msdn2.microsoft.com/en-us/library/ms968501.aspx)
Windows Bentuk kontrol ActiveX importir (Aximp.exe)
.aspx http://msdn2.Microsoft.com/en-us/library/8ccdh774 (vs.71) (http://msdn2.microsoft.com/en-us/library/8ccdh774(vs.71).aspx)
Waktu pengoperasian Opsi beli Wrapper
.aspx http://msdn2.Microsoft.com/en-us/library/8bwh56xe (vs.71) (http://msdn2.microsoft.com/en-us/library/8bwh56xe(vs.71).aspx)
Biner Kompatibilitas perubahan dalam Visual Basic
.aspx http://msdn2.Microsoft.com/en-us/library/a6xdzb3y (vs.71) (http://msdn2.microsoft.com/en-us/library/a6xdzb3y(vs.71).aspx)


Berlaku bagi:
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Visual Studio .NET 2002 Academic Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 2.0
Kata kunci: 
kbvs2005swept kbvs2005applies kbideproject kbide kbcomctrls kbctrlcreate kbctrl kbcontrol kbcominterop kbprb kbmt KB818220 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:818220  (http://support.microsoft.com/kb/818220/en-us/ )