# SOLIDWORKS PDM Professional API Help

# Find Users Example (C#)

This example shows how to find users in the vault.

NOTE: If using the primary interop assembly provided with SOLIDWORKS PDM Professional, see Using .NET Framework 4.0 in Stand-alone Applications.

//----------------------------------------------------------------------------
// Preconditions:
// 1. Start Microsoft Visual Studio.
// a. Click File > New > Project > Visual C# > Windows Forms Application.
// b. Type FindUser_CSharp in Name.
// c. Click Browse and navigate to the folder where to create the project.
// d. Click OK.
// e. Click Show All Files in the Solution Explorer toolbar and expand
// Form1.cs in the Solution Explorer.
// f. Replace the code in Form1.cs with this code.
// g. To create the form, replace the code in Form1.Designer.cs with
// this code.
// 2. Add EPDM.Interop.epdm.dll as a reference (right-click the project
// name in the Solution Explorer, click Add Reference, click
// Assemblies > Framework in the left-side panel, browse to the top folder of
// your SOLIDWORKS PDM Professional installation, locate and click
// EPDM.Interop.epdm.dll, click Open, and click Add).
// 3. Right-click EPDM.Interop.epdm in References, click Properties, and set
// Embed Interop Types to False to handle methods that pass arrays of
// structures.
// 4. Click Debug > Start Debugging or press F5.
//
// Postconditions:
// 1. Displays the Find Users dialog box.
// a. Select a vault view.
// b. In Full name contains, type a substring of the full name of a
// user that exists in the vault.
// c. Click Find Users.
// A message box confirms the substring typed in Postconditions
// step 1b.
// d. Click OK.
// Displays a Search for users dialog.
// e. Click Find.
// Displays a Search for users dialog with results.
// f. Click the first row.
// g. Click Select.
// * Displays a message box with the updated user information.
// * The selected user's phone and website information are updated.
// h. Click OK.
// 2. Updates the Find Users dialog box with the full name and picture,
// if it exists, of the last user found whose full name contains the substring
// typed in Postconditions step 1b.
// 3. Close the Find Users dialog box.
//----------------------------------------------------------------------------

    //Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using EPDM.Interop.epdm;
namespace FindUser_CSharp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
IEdmVault5 vault1;
IEdmVault8 vault;
EdmViewInfo[] Views = null;
public void Form1_Load(System.Object sender, System.EventArgs e)
{
try
{
vault1 = new EdmVault5();
vault = (IEdmVault8)vault1;
vault.GetVaultViews(out Views, false);
VaultsComboBox.Items.Clear();
foreach (EdmViewInfo View in Views)
{
VaultsComboBox.Items.Add(View.mbsVaultName);
}
if (VaultsComboBox.Items.Count > 0)
{
VaultsComboBox.Text = (string)VaultsComboBox.Items[0];
}
}
catch (System.Runtime.InteropServices.COMException ex)
{
MessageBox.Show("HRESULT = 0x" + ex.ErrorCode.ToString("X") + " " + ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void FindUsers_Click(System.Object sender, System.EventArgs e)
{
try {
IEdmVault7 vault2 = null;
if (vault1 == null) {
vault1 = new EdmVault5();
}
vault2 = (IEdmVault7)vault1;
if (!vault1.IsLoggedIn) {
vault1.LoginAuto(VaultsComboBox.Text, this.Handle.ToInt32());
}
//Get the user search interface
IEdmFindUser poFind = default(IEdmFindUser);
poFind = (IEdmFindUser)vault2.CreateUtility(EdmUtility.EdmUtil_FindUser);
//Search for a user with specified text in the full user name
poFind.SetPropt(EdmFindUserProp.Edmfup_FullName, this.TextBox1.Text);
string val = null;
val = (string)poFind.GetPropt(EdmFindUserProp.Edmfup_FullName);
MessageBox.Show("Find users whose full names contain " + "\"" + val + "\"");
poFind.ShowFindUI(this.Handle.ToInt32(), true, "Search for users");
IEdmEnum poResult = default(IEdmEnum);
poResult = poFind.Result;
string str = "Found " + poResult.Count.ToString() + " users with full names containing, " +
"\"" + this.TextBox1.Text + "\"" + ":";
System.Drawing.Image oImg = default(System.Drawing.Image);
IEdmUser10 poUser = default(IEdmUser10);
EdmUserDataEx UserInfo = new EdmUserDataEx();
//Specify which user data fields are valid
UserInfo.mlEdmUserDataExFlags = (int)EdmUserDataExFlag.Edmudex_All;
foreach ( object foundUser in poResult) {
poUser = (IEdmUser10)foundUser;
//Get user's information
poUser.GetUserDataEx(ref UserInfo);
//Update user's information
UserInfo.mbsPhone = "123456789";
UserInfo.mbsWebSite1 = "http://www.solidworks.com";
UserInfo.mbsWebSite2 = "https://www.facebook.com/solidworks";
poUser.SetUserDataEx(ref UserInfo);
str = str + "\n" + "Full name: " + UserInfo.mbsCompleteName + ", Phone: " + UserInfo.mbsPhone +
", WebSite1: " + UserInfo.mbsWebSite1 + ", Website2: " + UserInfo.mbsWebSite2;
}
MessageBox.Show(str);
//Display the picture, if available, of the last user found
if ((UserInfo.mbsPicturePath != null)) {
this.TextBox2.Text = UserInfo.mbsCompleteName;
oImg = System.Drawing.Bitmap.FromFile(UserInfo.mbsPicturePath);
this.CreateGraphics().DrawImage(oImg, 40, 220);
}
} catch (System.Runtime.InteropServices.COMException ex) {
MessageBox.Show("HRESULT = 0x" + ex.ErrorCode.ToString("X") + " " + ex.Message);
} catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
}
}

    Back to top

    //Form1.Designer.cs

namespace FindUser_CSharp
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.FindUsers = new System.Windows.Forms.Button();
this.VaultsComboBox = new System.Windows.Forms.ComboBox();
this.Label1 = new System.Windows.Forms.Label();
this.Label2 = new System.Windows.Forms.Label();
this.TextBox1 = new System.Windows.Forms.TextBox();
this.Label3 = new System.Windows.Forms.Label();
this.TextBox2 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// FindUsers
//
this.FindUsers.Location = new System.Drawing.Point(72, 136);
this.FindUsers.Name = "FindUsers";
this.FindUsers.Size = new System.Drawing.Size(66, 23);
this.FindUsers.TabIndex = 0;
this.FindUsers.Text = "Find Users";
this.FindUsers.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.FindUsers.UseVisualStyleBackColor = true;
this.FindUsers.Click += new System.EventHandler(this.FindUsers_Click);
//
// VaultsComboBox
//
this.VaultsComboBox.FormattingEnabled = true;
this.VaultsComboBox.Location = new System.Drawing.Point(30, 39);
this.VaultsComboBox.Name = "VaultsComboBox";
this.VaultsComboBox.Size = new System.Drawing.Size(169, 21);
this.VaultsComboBox.TabIndex = 1;
//
// Label1
//
this.Label1.AutoSize = true;
this.Label1.Location = new System.Drawing.Point(27, 23);
this.Label1.Name = "Label1";
this.Label1.Size = new System.Drawing.Size(91, 13);
this.Label1.TabIndex = 2;
this.Label1.Text = "Select vault view:";
//
// Label2
//
this.Label2.AutoSize = true;
this.Label2.Location = new System.Drawing.Point(27, 77);
this.Label2.Name = "Label2";
this.Label2.Size = new System.Drawing.Size(98, 13);
this.Label2.TabIndex = 3;
this.Label2.Text = "Full name contains:";
//
// TextBox1
//
this.TextBox1.Location = new System.Drawing.Point(32, 93);
this.TextBox1.Name = "TextBox1";
this.TextBox1.Size = new System.Drawing.Size(167, 20);
this.TextBox1.TabIndex = 4;
//
// Label3
//
this.Label3.AutoSize = true;
this.Label3.Location = new System.Drawing.Point(29, 172);
this.Label3.Name = "Label3";
this.Label3.Size = new System.Drawing.Size(83, 13);
this.Label3.TabIndex = 6;
this.Label3.Text = "Last user found:";
//
// TextBox2
//
this.TextBox2.Location = new System.Drawing.Point(30, 188);
this.TextBox2.Name = "TextBox2";
this.TextBox2.Size = new System.Drawing.Size(169, 20);
this.TextBox2.TabIndex = 7;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(406, 447);
this.Controls.Add(this.TextBox2);
this.Controls.Add(this.Label3);
this.Controls.Add(this.TextBox1);
this.Controls.Add(this.Label2);
this.Controls.Add(this.Label1);
this.Controls.Add(this.VaultsComboBox);
this.Controls.Add(this.FindUsers);
this.Name = "Form1";
this.Text = "Find Users";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
internal System.Windows.Forms.Button FindUsers;
internal System.Windows.Forms.ComboBox VaultsComboBox;
internal System.Windows.Forms.Label Label1;
internal System.Windows.Forms.Label Label2;
internal System.Windows.Forms.TextBox TextBox1;
internal System.Windows.Forms.Label Label3;
internal System.Windows.Forms.TextBox TextBox2;
#endregion
}
}

    Back to top