Hallo,
op mijn form blijven de labels en buttons staan. Zie afbeeldingen. Hoe kan ik dit voorkomen. Nu doe ik elke 500 ms een this.Refresh() maar daarvan gaat het formulier knipperen. Een this.Refresh() na een update van een label of visible = false geeft ook niet het gewenste resultaat. Wie kan mij hiermee helpen.


Hieronder de code.
op mijn form blijven de labels en buttons staan. Zie afbeeldingen. Hoe kan ik dit voorkomen. Nu doe ik elke 500 ms een this.Refresh() maar daarvan gaat het formulier knipperen. Een this.Refresh() na een update van een label of visible = false geeft ook niet het gewenste resultaat. Wie kan mij hiermee helpen.


Hieronder de code.
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Timers;
using System.Threading;
using System.IO;
using System.Reflection;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swcommands;
using SolidWorks.Interop.swconst;
using SolidWorks.Interop.swpublished;
using SolidWorksTools;
namespace Callback_Test
{
[ComVisible(true)]
[ProgId(SWTASKPANE_PROGID)]
public partial class KoppelingTaskpane : UserControl
{
#region variables
Thread thread;
private delegate void RefreshGUI();
private delegate void UpdateGUI();
private delegate void ChooseGrpbox();
public static bool UpdateTheGui = false;
delegate void TextBoxDelegate(string message);
public SldWorks mSWApplication;
public int mCookie;
public SketchManager swSketchMgr;
public Sketch swSketch;
public static ISldWorks swApp;
public ModelDoc2 swModel;
public static ModelDoc2 model = default(ModelDoc2);
public ModelDocExtension swModelDocExt;
public CustomPropertyManager swCustProp;
string val = "";
string valout = "";
bool status;
public AssemblyDoc swAssembly;
public BackgroundWorker backgroundWorker1;
public KoppelingTaskpane mTaskpaneHost;
public int stop = 0;
public SwAddin addin;
public PartDoc doc;
public static bool groupBox2Visable = false;
public static bool groupBox1Visable = false;
public static bool docopen;
public static bool GotType = false;
static int i = 0;
static int w = 0;
#endregion
public static string str2 = "1";
public const string SWTASKPANE_PROGID = "Robin.KoppelingTaskpane2_AddInRobin";
public delegate void UpdateLabels(string text);
public bool trui;
public KoppelingTaskpane()
{
InitializeComponent();
thread = new Thread(new ThreadStart(MyThreadLoop));
thread.Start();
ToolTip toolTip1 = new ToolTip();
}
private void MyThreadLoop()
{
while (true)
{
if (GotType == true)
{
GotType = false;
w++;
this.Hide();
GetModelType();
this.Show();
//RefreshKoppelingTaskpane();
}
Grpbox();
UpdateTheGuiNow2();
if (UpdateTheGui)
{
GetProps(trui);
if (GetProps(trui) == true)
{
UpdateTheGuiNow();
trui = false;
//RefreshKoppelingTaskpane();
}
UpdateTheGui = false;
//RefreshKoppelingTaskpane();
}
Thread.Sleep(900);
}
}
public void RefreshKoppelingTaskpane()
{
if (this.InvokeRequired)
{
this.Invoke(new RefreshGUI(RefreshKoppelingTaskpane));
return;
}
this.Refresh();
}
public static bool GetModelType()
{
i++;
try
{
model = (ModelDoc2)swApp.ActiveDoc;
}
catch
{
return false;
}
switch (model.GetType())
{
case (int)swDocumentTypes_e.swDocPART:
{
//MessageBox.Show("Part");
KoppelingTaskpane.groupBox2Visable = false;
KoppelingTaskpane.groupBox1Visable = true;
break;
}
case (int)swDocumentTypes_e.swDocASSEMBLY:
{
//MessageBox.Show("Assembly");
KoppelingTaskpane.groupBox2Visable = true;
KoppelingTaskpane.groupBox1Visable = false;
break;
}
case (int)swDocumentTypes_e.swDocDRAWING:
{
//MessageBox.Show("Drawing");
KoppelingTaskpane.groupBox2Visable = false;
KoppelingTaskpane.groupBox1Visable = false;
break;
}
default:
{
//MessageBox.Show("geen document");
KoppelingTaskpane.groupBox2Visable = false;
KoppelingTaskpane.groupBox1Visable = false;
return false; //Unsupported document type
}
}
GotType = false;
return true;
}
private void Grpbox()
{
if (groupBox1Visable == true)
{
if (groupBox1.InvokeRequired)
{
groupBox1.Invoke(new ChooseGrpbox(Grpbox));
return;
}
this.groupBox1.Visible = true;
}
else
{
if (groupBox1.InvokeRequired)
{
groupBox1.Invoke(new ChooseGrpbox(Grpbox));
return;
}
this.groupBox1.Visible = false;
}
if (groupBox2Visable == true)
{
if (groupBox2.InvokeRequired)
{
groupBox2.Invoke(new ChooseGrpbox(Grpbox));
return;
}
this.groupBox2.Visible = true;
}
else
{
if (groupBox2.InvokeRequired)
{
groupBox2.Invoke(new ChooseGrpbox(Grpbox));
return;
}
this.groupBox2.Visible = false;
}
if (groupBox1Visable == false && groupBox2Visable == false)
{
if (button1.InvokeRequired == true || button2.InvokeRequired == true || button3.InvokeRequired == true)
{
button1.Invoke(new ChooseGrpbox(Grpbox));
button2.Invoke(new ChooseGrpbox(Grpbox));
button3.Invoke(new ChooseGrpbox(Grpbox));
return;
}
button1.Visible = false;
button2.Visible = false;
button3.Visible = false;
}
else
{
if (button1.InvokeRequired == true || button2.InvokeRequired == true || button3.InvokeRequired == true)
{
button1.Invoke(new ChooseGrpbox(Grpbox));
button2.Invoke(new ChooseGrpbox(Grpbox));
button3.Invoke(new ChooseGrpbox(Grpbox));
return;
}
button1.Visible = true;
button2.Visible = true;
button3.Visible = true;
}
}
private bool GetProps(bool ja)
{
try
{
swApp = (SldWorks)Activator.CreateInstance(
Type.GetTypeFromProgID("SldWorks.Application"));
swModel = swApp.IActiveDoc2;
swCustProp = swModel.Extension.get_CustomPropertyManager("");
status = swCustProp.Get4("PartNo", false, out val, out valout);
Thread.Sleep(50);
return true;
}
catch (System.Exception e)
{
MessageBox.Show("geen properties geladen");
return false;
}
}
private void UpdateTheGuiNow()
{
if (textBox1.InvokeRequired)
{
textBox1.Invoke(new UpdateGUI(UpdateTheGuiNow));
return;
}
this.textBox1.Text = val;
this.label2.Text = valout;
}
private void UpdateTheGuiNow2()
{
if (label3.InvokeRequired)
{
label3.Invoke(new UpdateGUI(UpdateTheGuiNow2));
return;
}
label3.Text = DateTime.Now.ToString("MM-dd-yyyy\nHH:mm:ss");
}
public void Init(SldWorks app)
{
mSWApplication = app;
//ModelDoc2 testdoc = app.OpenDoc("C:\\Users\\Robin\\Desktop\\Stenenvanger\\000001-1.sldprt", 1);
}
private void KoppelingTaskpane_Load(object sender, EventArgs e)
{
ToolTip toolTip1 = new ToolTip();
toolTip1.AutoPopDelay = 5000;
toolTip1.InitialDelay = 1000;
toolTip1.ReshowDelay = 500;
toolTip1.ShowAlways = true;
toolTip1.SetToolTip(this.textBox1, "My textBox1");
ToolTip toolTip2 = new ToolTip();
toolTip2.AutoPopDelay = 5000;
toolTip2.InitialDelay = 1000;
toolTip2.ReshowDelay = 500;
toolTip2.ShowAlways = true;
toolTip2.SetToolTip(this.label2, "My label2");
ToolTip toolTip3 = new ToolTip();
toolTip3.AutoPopDelay = 5000;
toolTip3.InitialDelay = 1000;
toolTip3.ReshowDelay = 500;
toolTip3.ShowAlways = true;
toolTip3.SetToolTip(this.label3, "My label3");
}
#region button click
public void button1_Click(object sender, EventArgs e)
{
UpdateTheGui = true;
MessageBox.Show("groepbox 1 = " + groupBox1Visable);
this.BackgroundImage = this.BackgroundImage;
}
public void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("val = " + val + "\nvalout = " + valout);
}
private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show(i + " x uitgevoerd\n" + w + " x uitgevoerd\n" + "GB1 is " + groupBox1Visable + "\nGB2 is " + groupBox2Visable);
RefreshKoppelingTaskpane();
}
#endregion
#region label click
public void label1_Click(object sender, EventArgs e)
{
}
public void label2_Click(object sender, EventArgs e)
{
}
private void label3_Click(object sender, EventArgs e)
{
}
#endregion
private void groupBox1_Enter(object sender, EventArgs e)
{
}
private void myGroupBox1_Enter(object sender, EventArgs e)
{
}
}
}
Laatst bewerkt: