Интеграция MapBasic с.NET Проблема с элементами управления TextBox
Я пытаюсь интегрировать Map-Basic с.NET. Конечная цель - получить приложение, способное задавать номера адресов для сегментирования дружественным и автоматическим способом. Проблема, с которой я столкнулся, заключается в том, что текстовые поля в форме.NET вообще не реагируют., Они даже не получают начальное значение. Вот упрощенный пример кода.
Form1.Designer.cs
partial class Form1
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(68, 67);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(255, 26);
this.textBox1.TabIndex = 0;
this.textBox1.TabStop = false;
this.textBox1.Text = "Initial text";
//
// button1
//
this.button1.Location = new System.Drawing.Point(68, 184);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(255, 56);
this.button1.TabIndex = 1;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
this.PerformLayout();
}
public System.Windows.Forms.TextBox textBox1;
private Button button1;
}
Это Form1.cs
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Click");
}
}
И, наконец, класс со статическим методом
public class InterfaceClass
{
static Form1 form;
public static void showMainWindow(int hwnd)
{
form = new Form1();
form.Show();
form.PerformLayout();
}
}
Мой файл MB (MapBasic) выглядит следующим образом. (Удалив некоторые sub объявляет. Он успешно компилируется)
Включить "mapbasic.def"
Объявить метод showMainWindow Класс "SetNumberLib.InterfaceClass" Lib "SetNumberLib.dll" (ByVal hwnd As Integer)
Sub Main
Create Menu "Map Numbering" As
"Show Window" Calling ShowWindow,
"Exit" Calling EndApp
Alter Menu bar Add "Map Numbering"
End Sub
Sub ShowWindow
Dim hwndPro As Integer
hwndPro = SystemInfo(SYS_INFO_MAPINFOWND)
Call showMainWindow(hwndPro)
End Sub
Вернуться к форме. Кнопка отлично работает. При нажатии отображается окно сообщения. Текстовое поле похоже на неактивное изображение. Хуже. Я сомневаюсь, что он получает перерисовку. Любая идея? Я что-то пропустил. Кстати. Когда я тестирую dll из Net App, текстовые поля работают нормально.
Любая помощь будет высоко оценена.
Новая информация: RichTextBOx Работает нормально. Проблема все еще с TextBoxes. Любая подсказка?
1 ответ
Оказалось, что это поведение пропало на следующий день, когда я перезапустил Mapinfo. Реальное решение не в моих руках, но свежий экземпляр Mapinfo прекрасно работает с интегрированным.NET.